{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 前言\n",
    "\n",
    "Hey，大家好。\n",
    "\n",
    "这次我们要重点学习一下字符串（String）。\n",
    "\n",
    "说字符串，对于新人来说可能还有些陌生，你可以理解为 Python 要处理的文本数据，比如中文、英文的各种字、词组、句子，文本数据在 Python 中，就是以字符串的形式表现的。\n",
    "\n",
    "我们还是回到那个经典的代码`print('Hello World')`，我们来运行一下，你可以看到结果就是打印出了`Hello World`。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello World\n"
     ]
    }
   ],
   "source": [
    "\n",
    "print('Hello World')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 代码解读\n",
    "\n",
    "这一行代码就是运行`print()`这个函数（function），我们将文本数据传入`print()`函数。\n",
    "\n",
    "那现在如果我们想创建一个变量（Variable）来承载这个文本数据，我们可以设置一个变量叫`message`等于我们传递给`print()`函数的文本数据。这里`message`就是我们设定的变量名称。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello World\n"
     ]
    }
   ],
   "source": [
    "message = 'Hello World'\n",
    "print(message)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 代码解读\n",
    "\n",
    "现在我们已经有了 `message` 来承载我们的文本数据，`Hello World`，也就是我们的字符串，那现在程序哪里需要用到这个字符串，我们就可以用这个变量来代替这个字符串表示同样的内容，运行一下上面的代码，得到了跟我们最开始一样的结果。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Python 好习惯\n",
    "\n",
    "## 空白结尾\n",
    "你如果之前接触过其他编程语言，你可能会好奇是否需要使用分号（;）或者其他一些分隔符在每一段的结尾标记一个结束，Python 里面是不需要的，空着就可以运行的很好，这也让 Python 的语言看起来更加清爽。\n",
    "\n",
    "但这里要注意我们在写循环语句的 for、while 的时候，冒号（:）不能省略，这个我们之后要注意。\n",
    "\n",
    "## 变量命名\n",
    "按照惯例，我们通常用小写字母来为变量命名，如果使用多个单词来命名变量，我们要用下划线（underscore）来连接单词。就比如我们把`message`改成`my_message`。\n",
    "\n",
    "## 命名意义\n",
    "我们在命名的时候，也要注意尽量取一些贴近我们所要表达的意思的名字，比如这里就是要承载我们的信息，所以取名为`message`，很贴切。你说我不会英文，我要给它取名叫`xinxi`行不行？也可以。但是可能就差了点意思，并不是所有人都能看得懂，要是哪天你开源了你的代码，给外国友人看到了，他可能就不能理解你这个`xinxi`的意思，以及它所承载的数据是什么作用也就不能很好的理解了。\n",
    "\n",
    "当然你如果要取名为`print`，可以不可以？我们试试。你会发现报错了：\n",
    "\n",
    "```\n",
    "'str' object is not callable\n",
    "```\n",
    "\n",
    "同时在 Jupyter Notebook 里面你所有的`print`都报错了，因为你把一个python本身的函数名当作变量名用了，你相当于在跟`print`说，今天起你不要做打印的功能了，你就当个字符串，承载着`Hello World`就好，那打印的功能就被挤没了。\n",
    "\n",
    "这个教训就告诉我们，命名的时候不要占用现有的函数名、方法名、甚至到我们给文件夹命名的时候，也要注意最好不要用中文，也最好不要用已有的包的名字，比如`pandas`、`numpy`什么的，这些你之后用的时候就会发现，都是这些小的不注意的点在给自己挖坑。\n",
    "\n",
    "那怎么解决这个报错呢？你可以选择重启一下 Jupyter Notebook，另一个方法就是在最开始的时候运行一下`del print`，把`print`赋值的字符串内容删除，让它回归到自己的原始功能去。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "'str' object is not callable",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-66-7f87f73ce78e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;31m# 报错案例\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0mprint\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'Hello World'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m: 'str' object is not callable"
     ]
    }
   ],
   "source": [
    "# 报错案例\n",
    "print = 'Hello World'\n",
    "print(print)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Python 好习惯\n",
    "\n",
    "## 引号用法\n",
    "\n",
    "你们可以看到我使用单引号（`''`）创建了字符串，你也可以使用双引号（`\"\"`），你要问单引号和双引号有没有什么区别？那就真的是跟你字符串中的文本有关。\n",
    "\n",
    "举个例子，如果你创建的字符串里面已经有了一个单引号，python 就会认为你的字符串到`Bobby`就结束了，后面的内容尽管还有单引号包着，但是因为前面已经结束了，所以如果你现在运行代码，就会报错，语法错误（SyntaxError）。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Bobby's Wor\"ld\n"
     ]
    }
   ],
   "source": [
    "message = '''Bobby's Wor\"ld'''\n",
    "print(message)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 解决方案\n",
    "\n",
    "我们有不同的解决方案来处理这个报错。\n",
    "\n",
    "1. 反斜杠`＼`转义（escape）\n",
    "\n",
    "当我们在第二个单引号的左边加上反斜杠`message = 'Bobby\\'s World'`，python 就知道，这个单引号并不是意味着字符串的结束，它就是字符串的一部分，所以就会原样输出。\n",
    "\n",
    "2. 使用双引号\n",
    "\n",
    "如果我们知道我们的字符串里面包含了单引号，我们可以使用双引号来包住字符串，这样 python 就知道单引号不是结束，运行起来我们就得到正确的结果了。反过来，如果我们的字符串里面包含了双引号，我们就可以用单引号来包住字符串。\n",
    "\n",
    "3. 三引号\n",
    "\n",
    "三引号也是选择之一，在你的字符串里面不仅有单引号，还有双引号的时候，同时它的功能还是很大的，它能够包住多行字符串。\n",
    "\n",
    "\n",
    "## Python 转义字符\n",
    "在需要在字符中使用特殊字符时，python 用反斜杠 \\ 转义字符。如下表：\n",
    "\n",
    "|转义字符\t|描述|\n",
    "|----------|---|\n",
    "|`\\`|(在行尾时)\t续行符|\n",
    "|`\\\\`\t|反斜杠符号|\n",
    "|`\\'`\t|单引号|\n",
    "|`\\\"`\t|双引号|\n",
    "|`\\a`\t|响铃|\n",
    "|`\\b`\t|退格(Backspace)|\n",
    "|`\\e`\t|转义|\n",
    "|`\\000`\t|空|\n",
    "|`\\n`\t|换行|\n",
    "|`\\v`\t|纵向制表符|\n",
    "|`\\t`\t|横向制表符|\n",
    "|`\\r`\t|回车|\n",
    "|`\\f`\t|换页|\n",
    "|`\\oyy`\t|八进制数，yy代表的字符，例如：`\\o12`代表换行|\n",
    "|`\\xyy`\t|十六进制数，yy代表的字符，例如：`\\x0a`代表换行|\n",
    "|`\\other`\t|其它的字符以普通格式输出|\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\tI'm tabbed in.\n",
      "I'm split\n",
      "on a line.\n",
      "I'm \\ a \\ cat. \n",
      "\n",
      "I'll do a list:\n",
      "\t* Cat food\n",
      "\t* Fishies\n",
      "\t* Catnip\n",
      "\t* Grass\n",
      "\n",
      "\u0007\n"
     ]
    }
   ],
   "source": [
    "tabby_cat = \"\\tI'm tabbed in.\"\n",
    "persian_cat = \"I'm split\\non a line.\"\n",
    "backslash_cat = \"I'm \\\\ a \\\\ cat. \"\n",
    "\n",
    "fat_cat = \"\"\"\n",
    "I'll do a list:\n",
    "\\t* Cat food\n",
    "\\t* Fishies\n",
    "\\t* Catnip\\n\\t* Grass\n",
    "\"\"\"\n",
    "\n",
    "print(tabby_cat)\n",
    "print(persian_cat)\n",
    "print(backslash_cat)\n",
    "print(fat_cat)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 适用字符串的函数\n",
    "\n",
    "让我们继续回到我们开始的内容，字符串，字符串，就是一个个字符串起来的，那我们怎么知道一共有多少个字符呢？\n",
    "\n",
    "我们可以试试`len()`这个函数，`len`也是表示length（长度）。我们把原来的代码做一下修改："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "11\n"
     ]
    }
   ],
   "source": [
    "message = 'Hello World'\n",
    "print(len(message))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 代码解读\n",
    "我们可以看到我们得到一个字符串的长度是：11，我们可以简单的数一下，就是11个，包含空格也是一个字符。我们再想想，我们怎么才能得到每一个字符呢？\n",
    "\n",
    "字符串的截取的语法格式如下：\n",
    "\n",
    "```\n",
    "变量[头下标:尾下标]\n",
    "```\n",
    "\n",
    "索引值（index）以 0 为开始值，因为一共 11 个字符，所以最后一个的索引值就是10。如果我们填写的索引值超出范围，就会报错。\n",
    "\n",
    "\n",
    "如果倒着数，-1 为从末尾的开始位置。\n",
    "\n",
    "python 总是**左开右闭**，也就是说第一个参数要包括，第二个参数不包括，即使倒过来数，也是**左开右闭**。\n",
    "\n",
    "![字符串-索引-截取](https://pptwinpics.oss-cn-beijing.aliyuncs.com/%E5%AD%97%E7%AC%A6%E4%B8%B2-%E7%B4%A2%E5%BC%95-%E6%88%AA%E5%8F%96_20191121154452.png)\n",
    "\n",
    "加号`+`是字符串的连接符， 星号`*`表示复制当前字符串，紧跟的数字为复制的次数。实例如下：\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello World\n",
      "Hello Worl\n",
      "H\n",
      "llo\n",
      "llo World\n",
      "Hello WorldHello World\n",
      "Hello WorldTEST\n"
     ]
    }
   ],
   "source": [
    "message = 'Hello World'\n",
    " \n",
    "print (message)          # 输出字符串\n",
    "print (message[0:-1])    # 输出第一个到倒数第二个的所有字符\n",
    "print (message[0])       # 输出字符串第一个字符\n",
    "print (message[2:5])     # 输出从第三个开始到第五个的字符\n",
    "print (message[2:])      # 输出从第三个开始的后的所有字符\n",
    "print (message * 2)      # 输出字符串两次\n",
    "print (message + \"TEST\") # 连接字符串"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "oW o\n",
      "oo\n"
     ]
    }
   ],
   "source": [
    "# 思考题，涉及到了切片 slice(start, stop[, step])\n",
    "\n",
    "message = 'Hello World'\n",
    " \n",
    "print (message[7:3:-1])          # 输出字符串\n",
    "print (message[7:3:-3])    # 输出第一个到倒数第二个的所有字符"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 字符串的分类\n",
    "\n",
    "\n",
    "## `u'someting'`：就是正常的字符串，python2 的遗留产物\n",
    "\n",
    "主要是在网上搜索到一些 python2 的代码的时候，会看到这样的用法，在 python3 中也能运行。\n",
    "\n",
    "主要原因是 python2 与 python3 之间的字符串采取的不同格式。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## `f'hello { name } '`\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## `b'that'`：字节（bytes）\n",
    "\n",
    "唯独这个不是字符串。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "str"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看类型\n",
    "type('this')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "bytes"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(b'this')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "can't concat str to bytes",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-9-8094c43c625b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;31m# 类型不同是无法合并的\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;34mb'this'\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m'that'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m: can't concat str to bytes"
     ]
    }
   ],
   "source": [
    "# 类型不同是无法合并的\n",
    "\n",
    "b'this' + 'that'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最早的字节就是迅雷当中，kb/s 中的 b 就是 bytes，字节，这是给计算机看的，它只认字节，这里就涉及到转码的事情，就需要翻译码，unicode，utf-8这些解码标准。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "中文\n"
     ]
    }
   ],
   "source": [
    "z = '中文'\n",
    "print(z)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b'\\xe4\\xb8\\xad\\xe6\\x96\\x87'"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z.encode('utf-8')  # 转码，让人看得懂的变成机器看得懂的字节"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "f = b'\\xe4\\xb8\\xad\\xe6\\x96\\x87'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'中文'"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f.decode('utf-8')  # 解码，让机器看得懂的字节变成人看得懂的"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "日语、德语都是不同的编码语言。\n",
    "\n",
    "### 案例1\n",
    "最有名的一个就是：锟斤拷\n",
    "\n",
    "> Unicode和老编码体系的转化过程中，肯定有一些字，用Unicode是没法表示的，Unicode官方用了一个占位符来表示这些文字，这就是：U+FFFD REPLACEMENT CHARACTER。那么U+FFFD的UTF-8编码出来，恰好是 '\\xef\\xbf\\xbd'。如果这个'\\xef\\xbf\\xbd'，重复多次，例如 '\\xef\\xbf\\xbd\\xef\\xbf\\xbd'，然后放到GBK/CP936/GB2312/GB18030的环境中显示的话，一个汉字2个字节，最终的结果就是：锟斤拷——锟(0xEFBF)，斤（0xBDEF），拷（0xBFBD）\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b'\\xef\\xbf\\xbd\\xef\\xbf\\xbd'"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "z = '锟斤拷'\n",
    "z.encode('gbk')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'��'"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "h = b'\\xef\\xbf\\xbd\\xef\\xbf\\xbd'\n",
    "h.decode('utf-8')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 案例2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "b'<!DOCTYPE html>\\n<!-- [ published at 2019-10-31 16:31:55 ] -->\\n<html>\\n<head>\\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\\n\\n<title>WWW.SINA.COM</title>\\n<meta name=\"keywords\" content=\"sina, \\xe6\\x96\\xb0\\xe6\\xb5\\xaa\" />\\n<meta name=\"description\" content=\"\\xe6\\x96\\xb0\\xe6\\xb5\\xaa\\xe9\\xa6\\x96\\xe9\\xa1\\xb5\" />\\n<script type=\"text/javascript\" src=\"//img.sina.com/sinausa/article/common.js\"></script>\\n<style type=\"text/css\">\\n/* basic setup */\\nbody, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, form, fieldset, legend, input, textarea, p, blockquote, th, td {margin: 0; padding: 0;}\\nbody {background: #ebebed url(//ui.sina.com/assets/img/www/bg_gradient.gif) repeat-x; font-family: Arial, Helvetica, sans-serif; min-height: 100%;}\\nimg {border: 0;}\\nem {position: absolute; left: -9999em;}\\n.clearDiv {clear: both;}\\n#wrap { padding: 50px 0 10px;margin:0 auto; width: 775px}\\n\\n/* Header */\\n#header {position: relative; margin: 0 auto; width: 775px; border-bottom: 1px solid #ffa600;}\\n#header h1 {float: left; margin: 0; width: 275px; height: 50px; background: url(//ui.sina.com/assets/img/www/sina_id_www.gif) no-repeat top left;}\\n#header ul {float: left; margin: 0; width: 500px; height: 50px; list-style: none; font-size: 12px; color: #333; text-transform: capitalize;}\\n#header ul li {float: right; margin: 30px 0 0 0;}\\n#header ul li a {color: #333; text-decoration: none;}\\n#header ul li a:hover {color: #ff9900; text-decoration: none;}\\n\\n#map {position: relative; margin: 0; width: 775px; height: 248px;}\\n\\n#channel {position: relative; margin: 0; width: 775px; border-bottom: 1px solid #ffa600;}\\n\\n/* Footer */\\n\\t#footer {position: relative; margin: 0 auto; width: 775px; border-top: 1px solid #ffa600;margin-top:100px;}\\n#footer ul {margin: 10px auto; padding: 0; width: 775px; list-style: none; font-size: 12px; color: #333; text-transform: capitalize; text-align: center;}\\n#footer ul li {display: inline; padding: 2px 5px;}\\n#footer ul li a {color: #333; text-decoration: none;}\\n#footer ul li a:hover {color: #ff9900; text-decoration: none;}\\n\\n/* ads */\\n#ads {position: relative; margin: 5px 0; padding: 0; width: 775px;}\\n#ads ul {margin: 5px 0; width: 775px; list-style: none; text-align: center;}\\n#ads ul li.bnr728 {margin: 5px auto; padding: 0; width: 775px; height: 90px;}\\n#ads ul li.bnr545 {float: left; margin: 5px auto; padding: 0; width: 620px; height: 80px;}\\n#ads ul li.bnr120 {float: left; margin: 5px auto; padding: 0; width: 155px; height: 60px; line-height: 60px;}\\n#ads ul li.bnr120_2 {float: left; margin: 5px auto; padding: 0; width: 155px; height: 80px; line-height: 80px;}\\n\\n</style>\\n\\n\\n<!-- swfObject -->\\n<script type=\"text/javascript\" src=\"//ui.sina.com/assets/js/swfobject.js\"></script>\\n\\n<!-- btn.5 -->\\n<script type=\"text/javascript\">\\n\\tvar flashvars = {};\\n\\tvar params = {};\\n\\tparams.base = \"\";\\n\\tparams.menu = \"true\";\\n\\tparams.scale = \"noscale\";\\n\\tparams.bgcolor = \"#fff\";\\n\\tparams.quality = \"best\";\\n\\t// params.allowfullscreen = \"true\";\\n\\tparams.salign = \"c\";\\n\\tparams.wmode = \"window\";\\n\\tvar attributes = {};\\n\\tswfobject.embedSWF(\"//ui.sina.com/rm/toyota/091110/toyota_120x60_4_091110.swf\", \"btn5\", \"120\", \"60\", \"9.0.0\", \"expressInstall.swf\", flashvars, params, attributes);\\n\\n</script>\\n<!-- END -->\\n\\n\\n<script async src=\"//securepubads.g.doubleclick.net/tag/js/gpt.js\"></script>\\n<script>window.googletag = window.googletag || {cmd: []};</script>\\n\\n<script type=\\'text/javascript\\'>\\ngoogletag.cmd.push(function() {\\ngoogletag.defineSlot(\\'/4461/us.homepage\\', [728, 90], \\'div-gpt-ad-1443060329962-0\\').addService(googletag.pubads()).setTargeting(\"pos\", [\"top\"]);\\ngoogletag.defineSlot(\\'/4461/us.homepage\\', [728, 90], \\'div-gpt-ad-1443060329962-1\\').addService(googletag.pubads()).setTargeting(\"pos\", [\"middle1\"]);\\ngoogletag.defineSlot(\\'/4461/us.homepage\\', [160, 600], \\'div-gpt-ad-1443060329962-2\\').addService(googletag.pubads());\\ngoogletag.defineSlot(\\'/4461/us.homepage\\', [160, 600], \\'div-gpt-ad-1443060329962-3\\').addService(googletag.pubads());\\ngoogletag.pubads().enableSingleRequest();\\ngoogletag.enableServices();\\n});\\n</script>\\n</head>\\n<body>\\n\\n<!-- SUDA_CODE_START --> \\n<div style=\\'position:absolute;top:0;left:0;width:0;height:0;z-index:1\\'><div style=\\'position:absolute;top:0;left:0;width:1;height:1;\\'><iframe id=\\'SUDA_FC\\' src=\\'\\' width=1 height=1 SCROLLING=NO FRAMEBORDER=0></iframe></div><div style=\\'position:absolute;top:0;left:0;width:0;height:0;visibility:hidden\\' id=\\'SUDA_CS_DIV\\'></div></div> \\n<script type=\"text/javascript\">\\nvar SSL={Config:{},Space:function(d){var b=d,c=null;b=b.split(\".\");c=SSL;for(i=0,len=b.length;i<len;i++){c[b[i]]=c[b[i]]||{};c=c[b[i]]}return c}};SSL.Space(\"Global\");SSL.Space(\"Core.Dom\");SSL.Space(\"Core.Event\");SSL.Space(\"App\");SSL.Global={win:window||{},doc:document,nav:navigator,loc:location};SSL.Core.Dom={get:function(a){return document.getElementById(a)}};SSL.Core.Event={on:function(){}};SSL.App={_S_gConType:function(){var a=\"\";try{SSL.Global.doc.body.addBehavior(\"#default#clientCaps\");a=SSL.Global.doc.body.connectionType}catch(b){a=\"unkown\"}return a},_S_gKeyV:function(g,b,d,c){if(g==\"\"){return\"\"}if(c==\"\"){c=\"=\"}b=b+c;var f=g.indexOf(b);if(f<0){return\"\"}f=f+b.length;var a=g.indexOf(d,f);if(a<f){a=g.length}return g.substring(f,a)},_S_gUCk:function(a){if((undefined==a)||(\"\"==a)){return\"\"}return SSL.App._S_gKeyV(SSL.Global.doc.cookie,a,\";\",\"\")},_S_sUCk:function(e,a,b,d){if(a!=null){if((undefined==d)||(null==d)){d=\"sina.com.cn\"}if((undefined==b)||(null==b)||(\"\"==b)){SSL.Global.doc.cookie=e+\"=\"+a+\";domain=\"+d+\";path=/\"}else{var c=new Date();var f=c.getTime();f=f+86400000*b;c.setTime(f);f=c.getTime();SSL.Global.doc.cookie=e+\"=\"+a+\";domain=\"+d+\";expires=\"+c.toUTCString()+\";path=/\"}}},_S_gJVer:function(f,b){var e,a,g,c=1,d=0;if(\"MSIE\"==b){a=\"MSIE\";e=f.indexOf(a);if(e>=0){g=parseInt(f.substring(e+5));if(3<=g){c=1.1;if(4<=g){c=1.3}}}}else{if((\"Netscape\"==b)||(\"Opera\"==b)||(\"Mozilla\"==b)){c=1.3;a=\"Netscape6\";e=f.indexOf(a);if(e>=0){c=1.5}}}return c},_S_gFVer:function(nav){var ua=SSL.Global.nav.userAgent.toLowerCase();var flash_version=0;if(SSL.Global.nav.plugins&&SSL.Global.nav.plugins.length){var p=SSL.Global.nav.plugins[\"Shockwave Flash\"];if(typeof p==\"object\"){for(var i=10;i>=3;i--){if(p.description&&p.description.indexOf(\" \"+i+\".\")!=-1){flash_version=i;break}}}}else{if(ua.indexOf(\"msie\")!=-1&&ua.indexOf(\"win\")!=-1&&parseInt(SSL.Global.nav.appVersion)>=4&&ua.indexOf(\"16bit\")==-1){for(var i=10;i>=2;i--){try{var object=eval(\"new ActiveXObject(\\'ShockwaveFlash.ShockwaveFlash.\"+i+\"\\');\");if(object){flash_version=i;break}}catch(e){}}}else{if(ua.indexOf(\"webtv/2.5\")!=-1){flash_version=3}else{if(ua.indexOf(\"webtv\")!=-1){flash_version=2}}}}return flash_version},_S_gMeta:function(b,c){var d=SSL.Global.doc.getElementsByName(b);var a=0;if(c>0){a=c}return(d.length>a)?d[a].content:\"\"},_S_gHost:function(b){var a=new RegExp(\"^http(?:s)?://([^/]+)\",\"im\");if(b.match(a)){return b.match(a)[1].toString()}else{return\"\"}},_S_gTJMTMeta:function(){return SSL.App._S_gMeta(\"mediaid\")},_S_gTJZTMeta:function(){var a=SSL.App._S_gMeta(\"subjectid\");a.replace(\",\",\".\");a.replace(\";\",\",\");return a},_S_isFreshMeta:function(){return false},_S_isIFrameSelf:function(b,a){if(SSL.Global.win.top==SSL.Global.win){return false}else{try{if(SSL.Global.doc.body.clientHeight==0){return false}if((SSL.Global.doc.body.clientHeight>=b)&&(SSL.Global.doc.body.clientWidth>=a)){return false}else{return true}}catch(c){return true}}},_S_isHome:function(b){var a=\"\";try{SSL.Global.doc.body.addBehavior(\"#default#homePage\");a=SSL.Global.doc.body.isHomePage(b)?\"Y\":\"N\"}catch(c){a=\"unkown\"}return a}};function SUDA(I,h,g){var f=SSL.Global,y=SSL.Core.Dom,v=SSL.Core.Event,j=SSL.App;var F=\"webbug_meta_ref_mod_noiframe_async_fc_:9.12c\",k=\"-9999-0-0-1\";var b=f.nav.appName.indexOf(\"Microsoft Internet Explorer\")>-1?\"MSIE\":f.nav.appName;var u=f.nav.appVersion;var q=f.loc.href.toLowerCase();var z=f.doc.referrer.toLowerCase();var p=\"\";var n=\"\",J=\"SUP\",w=\"\",t=\"Apache\",x=\"SINAGLOBAL\",r=\"ULV\",G=\"UOR\",s=\"_s_upa\",a=320,l=240,H=0,o=\"\",m=\"\",M=0,K=10000,E=0,d=\"_s_acc\";var C=q.indexOf(\"https\")>-1?\"https://\":\"http://\",B=\"beacon.sina.com.cn\",D=C+B+\"/a.gif\",L=C+B+\"/e.gif\";var e=100,c=2000;var A={_S_gsSID:function(){var N=j._S_gUCk(t);if(\"\"==N){var O=new Date();N=Math.random()*10000000000000+\".\"+O.getTime();j._S_sUCk(t,N)}return N},_S_sGID:function(N){if(\"\"!=N){j._S_sUCk(x,N,3650)}},_S_gGID:function(){return j._S_gUCk(x)},_S_gsGID:function(){var N=j._S_gUCk(x);if(\"\"==N){N=A._S_gsSID();A._S_sGID(N)}return N},_S_gCid:function(){try{var N=j._S_gMeta(\"publishid\");if(\"\"!=N){var P=N.split(\",\");if(P.length>0){if(P.length>=3){k=\"-9999-0-\"+P[1]+\"-\"+P[2]}return P[0]}}else{return\"0\"}}catch(O){return\"0\"}},_S_gAEC:function(){return j._S_gUCk(d)},_S_sAEC:function(N){if(\"\"==N){return}var O=A._S_gAEC();if(O.indexOf(N+\",\")<0){O=O+N+\",\"}j._S_sUCk(d,O,7)},_S_p2Bcn:function(R,Q){var P=new Date();var O=Q+\"?\"+R+\"&gUid_\"+P.getTime();var N=new Image();SUDA.img=N;N.src=O},_S_gSUP:function(){if(w!=\"\"){return w}var P=unescape(j._S_gUCk(J));if(P!=\"\"){var O=j._S_gKeyV(P,\"ag\",\"&\",\"\");var N=j._S_gKeyV(P,\"user\",\"&\",\"\");var Q=j._S_gKeyV(P,\"uid\",\"&\",\"\");var S=j._S_gKeyV(P,\"sex\",\"&\",\"\");var R=j._S_gKeyV(P,\"dob\",\"&\",\"\");w=O+\":\"+N+\":\"+Q+\":\"+S+\":\"+R;return w}else{return\"\"}},_S_gsLVisit:function(P){var R=j._S_gUCk(r);var Q=R.split(\":\");var S=\"\";if(Q.length>=6){if(P!=Q[4]){var O=new Date();var N=new Date(parseInt(Q[0]));Q[1]=parseInt(Q[1])+1;if(O.getMonth()!=N.getMonth()){Q[2]=1}else{Q[2]=parseInt(Q[2])+1}if(((O.getTime()-N.getTime())/86400000)>=7){Q[3]=1}else{if(O.getDay()<N.getDay()){Q[3]=1}else{Q[3]=parseInt(Q[3])+1}}S=Q[0]+\":\"+Q[1]+\":\"+Q[2]+\":\"+Q[3];Q[5]=Q[0];Q[0]=O.getTime();j._S_sUCk(r,Q[0]+\":\"+Q[1]+\":\"+Q[2]+\":\"+Q[3]+\":\"+P+\":\"+Q[5],360)}else{S=Q[5]+\":\"+Q[1]+\":\"+Q[2]+\":\"+Q[3]}}else{var O=new Date();S=\":1:1:1\";j._S_sUCk(r,O.getTime()+S+\":\"+P+\":\",360)}return S},_S_gUOR:function(){var N=j._S_gUCk(G);var O=N.split(\":\");if(O.length>=2){return O[0]}else{return\"\"}},_S_sUOR:function(){var R=j._S_gUCk(G),W=\"\",O=\"\",V=\"\",Q=\"\";var X=/[&|?]c=spr(_[A-Za-z0-9]{1,}){3,}/;var S=new Date();if(q.match(X)){V=q.match(X)[0]}else{if(z.match(X)){V=z.match(X)[0]}}if(V!=\"\"){V=V.substr(3)+\":\"+S.getTime()}if(R==\"\"){if(j._S_gUCk(r)==\"\"&&j._S_gUCk(r)==\"\"){W=j._S_gHost(z);O=j._S_gHost(q)}j._S_sUCk(G,W+\",\"+O+\",\"+V,365)}else{var T=0,U=R.split(\",\");if(U.length>=1){W=U[0]}if(U.length>=2){O=U[1]}if(U.length>=3){Q=U[2]}if(V!=\"\"){T=1}else{var P=Q.split(\":\");if(P.length>=2){var N=new Date(parseInt(P[1]));if(N.getTime()<(S.getTime()-86400000*30)){T=1}}}if(T){j._S_sUCk(G,W+\",\"+O+\",\"+V,365)}}},_S_gRef:function(){var N=/^[^\\\\?&#]*.swf([\\\\?#])?/;if((z==\"\")||(z.match(N))){var O=j._S_gKeyV(q,\"ref\",\"&\",\"\");if(O!=\"\"){return O}}return z},_S_MEvent:function(){if(M==0){M++;var O=j._S_gUCk(s);if(O==\"\"){O=0}O++;if(O<K){var N=/[&|?]c=spr(_[A-Za-z0-9]{2,}){3,}/;if(q.match(N)||z.match(N)){O=O+K}}j._S_sUCk(s,O)}},_S_gMET:function(){var N=j._S_gUCk(s);if(N==\"\"){N=0}return N},_S_gCInfo_v2:function(){var N=new Date();return\"sz:\"+screen.width+\"x\"+screen.height+\"|dp:\"+screen.colorDepth+\"|ac:\"+f.nav.appCodeName+\"|an:\"+b+\"|cpu:\"+f.nav.cpuClass+\"|pf:\"+f.nav.platform+\"|jv:\"+j._S_gJVer(u,b)+\"|ct:\"+j._S_gConType()+\"|lg:\"+f.nav.systemLanguage+\"|tz:\"+N.getTimezoneOffset()/60+\"|fv:\"+j._S_gFVer(f.nav)},_S_gPInfo_v2:function(N,O){if((undefined==N)||(\"\"==N)){N=A._S_gCid()+k}return\"pid:\"+N+\"|st:\"+A._S_gMET()+\"|et:\"+E+\"|ref:\"+escape(O)+\"|hp:\"+j._S_isHome(q)+\"|PGLS:\"+j._S_gMeta(\"stencil\")+\"|ZT:\"+escape(j._S_gTJZTMeta())+\"|MT:\"+escape(j._S_gTJMTMeta())+\"|keys:\"},_S_gUInfo_v2:function(N){return\"vid:\"+N+\"|sid:\"+A._S_gsSID()+\"|lv:\"+A._S_gsLVisit(A._S_gsSID())+\"|un:\"+A._S_gSUP()+\"|uo:\"+A._S_gUOR()+\"|ae:\"+A._S_gAEC()},_S_gEXTInfo_v2:function(O,N){o=(undefined==O)?o:O;m=(undefined==N)?m:N;return\"ex1:\"+o+\"|ex2:\"+m},_S_pBeacon:function(R,Q,O){try{var T=A._S_gsGID();if(\"\"==T){if(H<1){setTimeout(function(){A._S_pBeacon(R,Q,O)},c);H++;return}else{T=A._S_gsSID();A._S_sGID(T)}}var V=\"V=2\";var S=A._S_gCInfo_v2();var X=A._S_gPInfo_v2(R,A._S_gRef());var P=A._S_gUInfo_v2(T);var N=A._S_gEXTInfo_v2(Q,O);var W=V+\"&CI=\"+S+\"&PI=\"+X+\"&UI=\"+P+\"&EX=\"+N;A._S_p2Bcn(W,D)}catch(U){}},_S_acTrack_i:function(N,P){if((\"\"==N)||(undefined==N)){return}A._S_sAEC(N);if(0==P){return}var O=\"AcTrack||\"+A._S_gGID()+\"||\"+A._S_gsSID()+\"||\"+A._S_gSUP()+\"||\"+N+\"||\";A._S_p2Bcn(O,L)},_S_uaTrack_i:function(P,N){var O=\"UATrack||\"+A._S_gGID()+\"||\"+A._S_gsSID()+\"||\"+A._S_gSUP()+\"||\"+P+\"||\"+N+\"||\"+A._S_gRef()+\"||\";A._S_p2Bcn(O,L)}};if(M==0){if(\"MSIE\"==b){SSL.Global.doc.attachEvent(\"onclick\",A._S_MEvent);SSL.Global.doc.attachEvent(\"onmousemove\",A._S_MEvent);SSL.Global.doc.attachEvent(\"onscroll\",A._S_MEvent)}else{SSL.Global.doc.addEventListener(\"click\",A._S_MEvent,false);SSL.Global.doc.addEventListener(\"mousemove\",A._S_MEvent,false);SSL.Global.doc.addEventListener(\"scroll\",A._S_MEvent,false)}}A._S_sUOR();return{_S_pSt:function(N,P,O){try{if((j._S_isFreshMeta())||(j._S_isIFrameSelf(l,a))){return}++E;A._S_gsSID();setTimeout(function(){A._S_pBeacon(N,P,O,0)},e)}catch(Q){}},_S_pStM:function(N,P,O){++E;A._S_pBeacon(N,((undefined==P)?A._S_upExt1():P),O)},_S_acTrack:function(N,P){try{if((undefined!=N)&&(\"\"!=N)){setTimeout(function(){A._S_acTrack_i(N,P)},e)}}catch(O){}},_S_uaTrack:function(O,N){try{if(undefined==O){O=\"\"}if(undefined==N){N=\"\"}if((\"\"!=O)||(\"\"!=N)){setTimeout(function(){A._S_uaTrack_i(O,N)},e)}}catch(P){}},_S_gCk:function(N){return j._S_gUCk(N)},_S_sCk:function(Q,N,O,P){return j._S_sUCk(Q,N,O,P)},_S_gGlobalID:function(){return A._S_gGID()},_S_gSessionID:function(){return A._S_gsSID()}}}var GB_SUDA;if(GB_SUDA==null){GB_SUDA=new SUDA({})}var _S_PID_=\"\";function _S_pSt(a,c,b){GB_SUDA._S_pSt(a,c,b)}function _S_pStM(a,c,b){GB_SUDA._S_pStM(a,c,b)}function _S_acTrack(a){GB_SUDA._S_acTrack(a,1)}function _S_uaTrack(b,a){GB_SUDA._S_uaTrack(b,a)}(function(){function a(b,e,d){var c=document.createElement(\"script\");if(typeof e===\"string\"){c.charset=e}c.onreadystatechange=c.onload=function(){if(!this.readyState||this.readyState==\"loaded\"||this.readyState==\"complete\"){if(e&&typeof e===\"function\"){e()}if(d&&typeof d===\"function\"){d()}c.onreadystatechange=c.onload=null;c.parentNode.removeChild(c)}};c.src=b;document.getElementsByTagName(\"head\")[0].appendChild(c)}a(\"https://d3.sina.com.cn/shh/ws/2012/xb/gladnews_run.js\")})();\\n</script> \\n<script type=\"text/javascript\"> \\nGB_SUDA._S_pSt(\"\");\\n</script> \\n<noScript> \\n<div style=\\'position:absolute;top:0;left:0;width:0;height:0;visibility:hidden\\'><img width=0 height=0 src=\\'//beacon.sina.com.cn/a.gif?noScript\\' border=\\'0\\' alt=\\'\\' /></div> \\n</noScript> \\n<!-- SUDA_CODE_END -->\\n\\n<div id=\"wrap\">\\n\\t\\n\\t<div class=\"sidead\" style=\"height:0px\"><div style=\"position:relative; left:-170px;top:20px; width:160px;cursor:pointer;\">\\n\\t\\t\\n<div id=\"div-gpt-ad-1443060329962-2\">\\n<script type=\"text/javascript\">\\ngoogletag.cmd.push(function() { googletag.display(\"div-gpt-ad-1443060329962-2\"); });\\n</script>\\n</div>\\n\\t\\t</div></div>\\n\\t\\n\\t<div class=\"sidead\" style=\"height:0px\"><div style=\"position:relative; left:790px;top:20px; width:160px;cursor:pointer;\">\\n\\t\\t\\n<div id=\"div-gpt-ad-1443060329962-3\">\\n<script type=\"text/javascript\">\\ngoogletag.cmd.push(function() { googletag.display(\"div-gpt-ad-1443060329962-3\"); });\\n</script>\\n</div>\\n</div></div>\\n\\t<!-- Header -->\\n\\t<div id=\"header\">\\n\\t\\t<h1><em>\\xe6\\x96\\xb0\\xe6\\xb5\\xaa\\xe4\\xb8\\x80\\xe5\\x88\\x87\\xe7\\x94\\xb1\\xe4\\xbd\\xa0\\xe5\\xbc\\x80\\xe5\\xa7\\x8b</em></h1>\\n\\t\\t<ul>\\n\\t\\t<li><a href=\"http://english.sina.com/index.html\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'english\\');\">Sina English</a></li>\\n\\t\\t</ul>\\n\\t\\t<div class=\"clearDiv\"></div>\\n\\t</div>\\n\\n\\t<!-- Map -->\\n\\t<div id=\"map\">\\n\\t\\t<img src=\"//ui.sina.com/assets/img/www/worldmap.jpg\" alt=\"\" name=\"map1\" width=\"775\" height=\"248\" border=\"0\" usemap=\"#Map1\" id=\"Map1\" />\\n\\n<map name=\"Map1\" id=\"\">\\n<area shape=\"rect\" coords=\"173,81,299,137\" href=\"https://home.sina.com\" target=\"_self\" alt=\"\\xe5\\x8c\\x97\\xe7\\xbe\\x8e\\xe6\\x96\\xb0\\xe6\\xb5\\xaa\" title=\"\\xe5\\x8c\\x97\\xe7\\xbe\\x8e\\xe6\\x96\\xb0\\xe6\\xb5\\xaa\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'us\\');\" />\\n<area shape=\"rect\" coords=\"468,81,572,129\" href=\"http://www.sina.com.cn\" target=\"_self\" alt=\"\\xe5\\x8c\\x97\\xe4\\xba\\xac\\xe6\\x96\\xb0\\xe6\\xb5\\xaa\" title=\"\\xe5\\x8c\\x97\\xe4\\xba\\xac\\xe6\\x96\\xb0\\xe6\\xb5\\xaa\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'beijing\\');\" />\\n<area shape=\"rect\" coords=\"482,145,578,184\" href=\"http://www.sina.com.hk\" target=\"_self\" alt=\"\\xe9\\xa6\\x99\\xe6\\xb8\\xaf\\xe6\\x96\\xb0\\xe6\\xb5\\xaa\" title=\"\\xe9\\xa6\\x99\\xe6\\xb8\\xaf\\xe6\\x96\\xb0\\xe6\\xb5\\xaa\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'hongkong\\');\" />\\n<area shape=\"rect\" coords=\"658,123,755,162\" href=\"http://www.sina.com.tw\" target=\"_self\" alt=\"\\xe5\\x8f\\xb0\\xe6\\xb9\\xbe\\xe6\\x96\\xb0\\xe6\\xb5\\xaa\" title=\"\\xe5\\x8f\\xb0\\xe6\\xb9\\xbe\\xe6\\x96\\xb0\\xe6\\xb5\\xaa\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'taipei\\');\" />\\n</map>\\n\\t</div>\\n\\n\\t<!-- Channels -->\\n\\t<div id=\"channel\">\\n\\t\\t<img src=\"//img.sina.com/sinausa/img/Navi_180321_2.gif\" alt=\"\" width=\"775\" height=\"44\" border=\"0\" usemap=\"#Map4\"  id=\"Map4\" />\\n<!--<img src=\"//n.sinaimg.cn/ussina/www/Navi_171211.gif\" alt=\"\" width=\"775\" height=\"44\" border=\"0\" usemap=\"#Map4\"  id=\"Map4\" />-->\\n\\n<map name=\"Map4\" id=\"\">\\n<area shape=\"rect\" target=\"_self\" alt=\"\\xe5\\xbe\\xae\\xe5\\x8d\\x9a\" coords=\"4,3,76,35\" href=\"http://us.weibo.com\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'weibo\\');\" />\\n<area shape=\"rect\" target=\"_self\" alt=\"\\xe6\\x96\\xb0\\xe8\\x81\\x9e\" coords=\"95,3,166,37\" href=\"https://dailynews.sina.com/\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'dailynews\\');\" />\\n<area shape=\"rect\" target=\"_self\" alt=\"\\xe8\\xb2\\xa1\\xe7\\xb6\\x93\" coords=\"171,2,241,38\" href=\"https://finance.sina.com/\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'finance\\');\" />\\n<area shape=\"rect\" target=\"_self\" alt=\"\\xe5\\xa8\\x9b\\xe6\\xa8\\x82\" coords=\"257,3,328,39\" href=\"http://ent.sina.com/\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'ent\\');\" />\\n<area shape=\"rect\" target=\"_self\" alt=\"\\xe4\\xb8\\x93\\xe9\\xa2\\x98\" coords=\"335,3,417,38\" href=\"http://dailynews.sina.com/gb/focusnews/\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'v\\');\" />\\n<!--<area shape=\"rect\" target=\"_self\" alt=\"\\xe7\\xaf\\x80\\xe6\\x97\\xa5\" coords=\"335,3,417,38\" href=\"http://zt.sina.com/springfestival2019\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'v\\');\" />-->\\n<!--<area shape=\"rect\" target=\"_self\" alt=\"\\xe8\\xa6\\x96\\xe9\\xa0\\xbb\" coords=\"335,3,417,38\" href=\"https://www.youtube.com/user/sinapremium\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'v\\');\" />-->\\n<area shape=\"rect\" target=\"_self\" alt=\"\\xe5\\x9c\\xb0\\xe7\\x94\\xa2\" coords=\"432,3,496,36\" href=\"http://house.sina.com/\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'house\\');\" />\\n<!--<area shape=\"rect\" target=\"_self\" alt=\"\\xe8\\xa6\\x96\\xe9\\xa0\\xbb\" coords=\"509,2,582,35\" href=\"http://video.sina.com/\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'v\\');\" />-->\\n<area shape=\"rect\" target=\"_self\" alt=\"\\xe6\\x8e\\x92\\xe8\\xa1\\x8c\" coords=\"509,2,582,35\" href=\"http://dailynews.sina.com/gb/topnews/\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'v\\');\" />\\n<area shape=\"rect\" target=\"_self\" alt=\"\\xe4\\xba\\xa4\\xe5\\x8f\\x8b\" coords=\"590,2,679,33\" href=\"https://sina.2redbeans.com/zh-CN/chinese-dating?utm_source=sina&utm_medium=text&utm_campaign=sina_sidebar\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'match\\');\" />\\n<area shape=\"rect\" target=\"_self\" alt=\"POP\" coords=\"688,1,772,35\" href=\"http://ipop.sina.com/\" onclick=\"_S_uaTrack(\\'global_guide\\', \\'deals\\');\" />\\n</map>\\n\\t</div>\\n\\n\\t<!-- ads (banners/buttons) -->\\n\\t<div id=\"ads\">\\n\\t\\t<ul>\\n\\t\\t\\t<li class=\"bnr728\">\\n\\t\\t\\t\\t\\n<div id=\"div-gpt-ad-1443060329962-0\">\\n<script type=\"text/javascript\">\\ngoogletag.cmd.push(function() { googletag.display(\"div-gpt-ad-1443060329962-0\"); });\\n</script>\\n</div>\\n\\t\\t\\t</li>\\n\\t\\t\\t\\n\\t\\t\\t<li class=\"bnr120\">\\n\\t\\t\\t\\t\\n<a href=\"http://ipop.sina.com\" target=\"_blank\"><img src=\"//n.sinaimg.cn/default/20170821/8YdA-fykcypq2328517.jpg\"></a>\\n\\n\\t\\t\\t</li>\\n\\t\\t\\t<li class=\"bnr120\">\\n\\t\\t\\t\\t\\n<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=22225597&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//img.sina.com/sinausa/180/w120h60/20190824/d41d-icqznha4078871.gif\"></a>\\n\\n\\t\\t\\t</li>\\n\\t\\t\\t<li class=\"bnr120\">\\n\\t\\t\\t\\t\\n<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=22388917&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//img.sina.com/sinausa/180/w120h60/20190319/pB5O-hukwxnv4216443.jpg\"></a>\\n\\t\\n\\t\\t\\t</li>\\n\\t\\t\\t<li class=\"bnr120\">\\n\\t\\t\\t\\t\\n<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=47668597&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//n.sinaimg.cn/default/20170821/4r7x-fykcpru8742144.jpg\"></a>\\n\\n\\t\\t\\t</li>\\n\\t\\t\\t\\n\\t\\t\\t<li class=\"bnr120\">\\n\\t\\t\\t\\t\\n<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=5079025846&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//img.sina.com/sinausa/180/w120h60/20191024/d41d-ihmipqv9404630.gif\"></a>\\n\\n\\t\\t\\t</li>\\n\\t\\t\\t<li class=\"bnr120\">\\n\\t\\t\\t\\t\\n<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=4455456906&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//img.sina.com/default/180/w120h60/20180824/-Ivy-hicsiav9588909.gif\"></a>\\n\\n\\t\\t\\t</li>\\n\\t\\t\\t<li class=\"bnr120\">\\n\\t\\t\\t\\t\\n<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=175623037&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//n.sinaimg.cn/default/20171124/MqVp-fypceiq1333642.jpg\"></a>\\n\\n\\t\\t\\t</li>\\n\\t\\t\\t<li class=\"bnr120\">\\n\\t\\t\\t\\t\\n<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=5205243782&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//img.sina.com/sinausa/180/w120h60/20191024/d41d-ihmipqv9405500.gif\"></a>\\n\\n\\t\\t\\t</li>\\n\\t\\t\\t<li class=\"bnr120\">\\n\\t\\t\\t\\t\\n<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=53873917&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//n.sinaimg.cn/default/20170821/dozi-fykcypq2216137.gif\"></a>\\n\\n\\t\\t\\t</li>\\n\\t\\t\\t\\t<li class=\"bnr120\">\\n\\t\\t\\t\\t\\n<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=64076077&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//img.sina.com/sinausa/180/w120h60/20191010/d41d-ifrwayx3298899.gif\"></a>\\n\\t\\n\\t\\t\\t</li>\\n\\t\\t\\t\\t\\t\\n\\t\\t\\n\\t\\t</ul>\\n\\t\\t<ul>\\n\\t\\t\\t<li class=\"bnr728\">\\n\\t\\t\\t\\t\\n<div id=\"div-gpt-ad-1443060329962-1\">\\n<script type=\"text/javascript\">\\ngoogletag.cmd.push(function() { googletag.display(\"div-gpt-ad-1443060329962-1\"); });\\n</script>\\n</div>\\t\\t\\t\\n\\t\\t\\t</li>\\n\\t\\t</ul>\\n\\t\\t\\n\\t\\t<div class=\"clearDiv\"></div>\\n\\t</div>\\n\\t<!-- END . ads -->\\n\\n\\t<!-- Footer -->\\n\\t<div id=\"footer\">\\n\\t\\t<ul>\\n\\t\\t<li><a href=\"http://corp.sina.com.cn/eng/\">About SINA</a></li>\\n\\t\\t<li>|</li>\\n\\t\\t<li><a href=\"http://corp.sina.com.cn/eng/sina_rela_eng.htm\">Investor</a></li>\\n\\t\\t<li>|</li>\\n\\t\\t<li><a href=\"http://mediakit.sina.com/\">Media Kit</a></li>\\n\\t\\t<li>|</li>\\n\\t\\t<li><a href=\"http://mediakit.sina.com/contact.html\">Comments or Question?</a></li>\\n\\t\\t<br /><br />\\n\\t\\t<li class=\"copyright\">Copyright &copy; 1996-2019 SINA Corporation, All Rights Reserved</li>\\n\\t\\t</ul>\\n\\t</div>\\n\\n</div>\\n\\n<!--floating video-->\\n<div id=\"flvideo\"></div>\\n<!-- START Nielsen Online SiteCensus V6.0 -->\\n<script type=\"text/javascript\" src=\"//secure-us.imrworldwide.com/v60.js\"></script>\\n<script type=\"text/javascript\">\\nif(window.nol_t){\\nvar pvar = { cid: \"us-sina\", content: \"0\", server: \"secure-us\" };\\nvar feat = { surveys_enabled: 1, sample_rate: 0.1 };\\nvar trac = nol_t(pvar, feat);\\ntrac.record().post().do_sample();\\n}\\n</script>\\n<noscript>\\n<div>\\n<img src=\"//secure-us.imrworldwide.com/cgi-bin/m?ci=us-sina&amp;cg=0&amp;cc=1&amp;ts=noscript\" width=\"1\" height=\"1\" alt=\"\" />\\n</div>\\n</noscript>\\n<!-- END Nielsen Online SiteCensus V6.0 -->\\n\\n<script async src=\\'https://www.google-analytics.com/analytics.js\\'></script>\\n<script>\\n\\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\\n\\t//--Aggregate GA--//\\n\\tga(\\'create\\', \\'UA-42804763-1\\', \\'sina.com\\');\\n\\tga(\\'send\\', \\'pageview\\');\\n\\t\\n\\t//--Individual US Homepage Channel--//\\n\\tga(\\'create\\', \\'UA-39768672-1\\', {\\'name\\': \\'USHomepageChannel\\'});\\n\\tga(\\'USHomepageChannel.send\\', \\'pageview\\');\\n</script>\\n<img src=\"//pubads.g.doubleclick.net/activity;dc_iu=/4461/DFPAudiencePixel;ord=1572510715;dc_seg=820282358?\" width=1 height=1 border=0/>\\n<script type=\\'text/javascript\\'>\\nvar axel = Math.random() + \\'\\';\\nvar a = axel * 10000000000000;\\ndocument.write(\\'\\');\\n</script>\\n<noscript>\\n<img src=\"//pubads.g.doubleclick.net/activity;dc_iu=/4461/DFPAudiencePixel;ord=1;dc_seg=820282358?\" width=1 height=1 border=0/>\\n</noscript>\\n</body>\\n\\n</html>'\n"
     ]
    }
   ],
   "source": [
    "from requests import get\n",
    "r = get('https://www.sina.com')\n",
    "print(r.content)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<!DOCTYPE html>\n",
      "<!-- [ published at 2019-10-31 16:31:55 ] -->\n",
      "<html>\n",
      "<head>\n",
      "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n",
      "\n",
      "<title>WWW.SINA.COM</title>\n",
      "<meta name=\"keywords\" content=\"sina, 新浪\" />\n",
      "<meta name=\"description\" content=\"新浪首页\" />\n",
      "<script type=\"text/javascript\" src=\"//img.sina.com/sinausa/article/common.js\"></script>\n",
      "<style type=\"text/css\">\n",
      "/* basic setup */\n",
      "body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, form, fieldset, legend, input, textarea, p, blockquote, th, td {margin: 0; padding: 0;}\n",
      "body {background: #ebebed url(//ui.sina.com/assets/img/www/bg_gradient.gif) repeat-x; font-family: Arial, Helvetica, sans-serif; min-height: 100%;}\n",
      "img {border: 0;}\n",
      "em {position: absolute; left: -9999em;}\n",
      ".clearDiv {clear: both;}\n",
      "#wrap { padding: 50px 0 10px;margin:0 auto; width: 775px}\n",
      "\n",
      "/* Header */\n",
      "#header {position: relative; margin: 0 auto; width: 775px; border-bottom: 1px solid #ffa600;}\n",
      "#header h1 {float: left; margin: 0; width: 275px; height: 50px; background: url(//ui.sina.com/assets/img/www/sina_id_www.gif) no-repeat top left;}\n",
      "#header ul {float: left; margin: 0; width: 500px; height: 50px; list-style: none; font-size: 12px; color: #333; text-transform: capitalize;}\n",
      "#header ul li {float: right; margin: 30px 0 0 0;}\n",
      "#header ul li a {color: #333; text-decoration: none;}\n",
      "#header ul li a:hover {color: #ff9900; text-decoration: none;}\n",
      "\n",
      "#map {position: relative; margin: 0; width: 775px; height: 248px;}\n",
      "\n",
      "#channel {position: relative; margin: 0; width: 775px; border-bottom: 1px solid #ffa600;}\n",
      "\n",
      "/* Footer */\n",
      "\t#footer {position: relative; margin: 0 auto; width: 775px; border-top: 1px solid #ffa600;margin-top:100px;}\n",
      "#footer ul {margin: 10px auto; padding: 0; width: 775px; list-style: none; font-size: 12px; color: #333; text-transform: capitalize; text-align: center;}\n",
      "#footer ul li {display: inline; padding: 2px 5px;}\n",
      "#footer ul li a {color: #333; text-decoration: none;}\n",
      "#footer ul li a:hover {color: #ff9900; text-decoration: none;}\n",
      "\n",
      "/* ads */\n",
      "#ads {position: relative; margin: 5px 0; padding: 0; width: 775px;}\n",
      "#ads ul {margin: 5px 0; width: 775px; list-style: none; text-align: center;}\n",
      "#ads ul li.bnr728 {margin: 5px auto; padding: 0; width: 775px; height: 90px;}\n",
      "#ads ul li.bnr545 {float: left; margin: 5px auto; padding: 0; width: 620px; height: 80px;}\n",
      "#ads ul li.bnr120 {float: left; margin: 5px auto; padding: 0; width: 155px; height: 60px; line-height: 60px;}\n",
      "#ads ul li.bnr120_2 {float: left; margin: 5px auto; padding: 0; width: 155px; height: 80px; line-height: 80px;}\n",
      "\n",
      "</style>\n",
      "\n",
      "\n",
      "<!-- swfObject -->\n",
      "<script type=\"text/javascript\" src=\"//ui.sina.com/assets/js/swfobject.js\"></script>\n",
      "\n",
      "<!-- btn.5 -->\n",
      "<script type=\"text/javascript\">\n",
      "\tvar flashvars = {};\n",
      "\tvar params = {};\n",
      "\tparams.base = \"\";\n",
      "\tparams.menu = \"true\";\n",
      "\tparams.scale = \"noscale\";\n",
      "\tparams.bgcolor = \"#fff\";\n",
      "\tparams.quality = \"best\";\n",
      "\t// params.allowfullscreen = \"true\";\n",
      "\tparams.salign = \"c\";\n",
      "\tparams.wmode = \"window\";\n",
      "\tvar attributes = {};\n",
      "\tswfobject.embedSWF(\"//ui.sina.com/rm/toyota/091110/toyota_120x60_4_091110.swf\", \"btn5\", \"120\", \"60\", \"9.0.0\", \"expressInstall.swf\", flashvars, params, attributes);\n",
      "\n",
      "</script>\n",
      "<!-- END -->\n",
      "\n",
      "\n",
      "<script async src=\"//securepubads.g.doubleclick.net/tag/js/gpt.js\"></script>\n",
      "<script>window.googletag = window.googletag || {cmd: []};</script>\n",
      "\n",
      "<script type='text/javascript'>\n",
      "googletag.cmd.push(function() {\n",
      "googletag.defineSlot('/4461/us.homepage', [728, 90], 'div-gpt-ad-1443060329962-0').addService(googletag.pubads()).setTargeting(\"pos\", [\"top\"]);\n",
      "googletag.defineSlot('/4461/us.homepage', [728, 90], 'div-gpt-ad-1443060329962-1').addService(googletag.pubads()).setTargeting(\"pos\", [\"middle1\"]);\n",
      "googletag.defineSlot('/4461/us.homepage', [160, 600], 'div-gpt-ad-1443060329962-2').addService(googletag.pubads());\n",
      "googletag.defineSlot('/4461/us.homepage', [160, 600], 'div-gpt-ad-1443060329962-3').addService(googletag.pubads());\n",
      "googletag.pubads().enableSingleRequest();\n",
      "googletag.enableServices();\n",
      "});\n",
      "</script>\n",
      "</head>\n",
      "<body>\n",
      "\n",
      "<!-- SUDA_CODE_START --> \n",
      "<div style='position:absolute;top:0;left:0;width:0;height:0;z-index:1'><div style='position:absolute;top:0;left:0;width:1;height:1;'><iframe id='SUDA_FC' src='' width=1 height=1 SCROLLING=NO FRAMEBORDER=0></iframe></div><div style='position:absolute;top:0;left:0;width:0;height:0;visibility:hidden' id='SUDA_CS_DIV'></div></div> \n",
      "<script type=\"text/javascript\">\n",
      "var SSL={Config:{},Space:function(d){var b=d,c=null;b=b.split(\".\");c=SSL;for(i=0,len=b.length;i<len;i++){c[b[i]]=c[b[i]]||{};c=c[b[i]]}return c}};SSL.Space(\"Global\");SSL.Space(\"Core.Dom\");SSL.Space(\"Core.Event\");SSL.Space(\"App\");SSL.Global={win:window||{},doc:document,nav:navigator,loc:location};SSL.Core.Dom={get:function(a){return document.getElementById(a)}};SSL.Core.Event={on:function(){}};SSL.App={_S_gConType:function(){var a=\"\";try{SSL.Global.doc.body.addBehavior(\"#default#clientCaps\");a=SSL.Global.doc.body.connectionType}catch(b){a=\"unkown\"}return a},_S_gKeyV:function(g,b,d,c){if(g==\"\"){return\"\"}if(c==\"\"){c=\"=\"}b=b+c;var f=g.indexOf(b);if(f<0){return\"\"}f=f+b.length;var a=g.indexOf(d,f);if(a<f){a=g.length}return g.substring(f,a)},_S_gUCk:function(a){if((undefined==a)||(\"\"==a)){return\"\"}return SSL.App._S_gKeyV(SSL.Global.doc.cookie,a,\";\",\"\")},_S_sUCk:function(e,a,b,d){if(a!=null){if((undefined==d)||(null==d)){d=\"sina.com.cn\"}if((undefined==b)||(null==b)||(\"\"==b)){SSL.Global.doc.cookie=e+\"=\"+a+\";domain=\"+d+\";path=/\"}else{var c=new Date();var f=c.getTime();f=f+86400000*b;c.setTime(f);f=c.getTime();SSL.Global.doc.cookie=e+\"=\"+a+\";domain=\"+d+\";expires=\"+c.toUTCString()+\";path=/\"}}},_S_gJVer:function(f,b){var e,a,g,c=1,d=0;if(\"MSIE\"==b){a=\"MSIE\";e=f.indexOf(a);if(e>=0){g=parseInt(f.substring(e+5));if(3<=g){c=1.1;if(4<=g){c=1.3}}}}else{if((\"Netscape\"==b)||(\"Opera\"==b)||(\"Mozilla\"==b)){c=1.3;a=\"Netscape6\";e=f.indexOf(a);if(e>=0){c=1.5}}}return c},_S_gFVer:function(nav){var ua=SSL.Global.nav.userAgent.toLowerCase();var flash_version=0;if(SSL.Global.nav.plugins&&SSL.Global.nav.plugins.length){var p=SSL.Global.nav.plugins[\"Shockwave Flash\"];if(typeof p==\"object\"){for(var i=10;i>=3;i--){if(p.description&&p.description.indexOf(\" \"+i+\".\")!=-1){flash_version=i;break}}}}else{if(ua.indexOf(\"msie\")!=-1&&ua.indexOf(\"win\")!=-1&&parseInt(SSL.Global.nav.appVersion)>=4&&ua.indexOf(\"16bit\")==-1){for(var i=10;i>=2;i--){try{var object=eval(\"new ActiveXObject('ShockwaveFlash.ShockwaveFlash.\"+i+\"');\");if(object){flash_version=i;break}}catch(e){}}}else{if(ua.indexOf(\"webtv/2.5\")!=-1){flash_version=3}else{if(ua.indexOf(\"webtv\")!=-1){flash_version=2}}}}return flash_version},_S_gMeta:function(b,c){var d=SSL.Global.doc.getElementsByName(b);var a=0;if(c>0){a=c}return(d.length>a)?d[a].content:\"\"},_S_gHost:function(b){var a=new RegExp(\"^http(?:s)?://([^/]+)\",\"im\");if(b.match(a)){return b.match(a)[1].toString()}else{return\"\"}},_S_gTJMTMeta:function(){return SSL.App._S_gMeta(\"mediaid\")},_S_gTJZTMeta:function(){var a=SSL.App._S_gMeta(\"subjectid\");a.replace(\",\",\".\");a.replace(\";\",\",\");return a},_S_isFreshMeta:function(){return false},_S_isIFrameSelf:function(b,a){if(SSL.Global.win.top==SSL.Global.win){return false}else{try{if(SSL.Global.doc.body.clientHeight==0){return false}if((SSL.Global.doc.body.clientHeight>=b)&&(SSL.Global.doc.body.clientWidth>=a)){return false}else{return true}}catch(c){return true}}},_S_isHome:function(b){var a=\"\";try{SSL.Global.doc.body.addBehavior(\"#default#homePage\");a=SSL.Global.doc.body.isHomePage(b)?\"Y\":\"N\"}catch(c){a=\"unkown\"}return a}};function SUDA(I,h,g){var f=SSL.Global,y=SSL.Core.Dom,v=SSL.Core.Event,j=SSL.App;var F=\"webbug_meta_ref_mod_noiframe_async_fc_:9.12c\",k=\"-9999-0-0-1\";var b=f.nav.appName.indexOf(\"Microsoft Internet Explorer\")>-1?\"MSIE\":f.nav.appName;var u=f.nav.appVersion;var q=f.loc.href.toLowerCase();var z=f.doc.referrer.toLowerCase();var p=\"\";var n=\"\",J=\"SUP\",w=\"\",t=\"Apache\",x=\"SINAGLOBAL\",r=\"ULV\",G=\"UOR\",s=\"_s_upa\",a=320,l=240,H=0,o=\"\",m=\"\",M=0,K=10000,E=0,d=\"_s_acc\";var C=q.indexOf(\"https\")>-1?\"https://\":\"http://\",B=\"beacon.sina.com.cn\",D=C+B+\"/a.gif\",L=C+B+\"/e.gif\";var e=100,c=2000;var A={_S_gsSID:function(){var N=j._S_gUCk(t);if(\"\"==N){var O=new Date();N=Math.random()*10000000000000+\".\"+O.getTime();j._S_sUCk(t,N)}return N},_S_sGID:function(N){if(\"\"!=N){j._S_sUCk(x,N,3650)}},_S_gGID:function(){return j._S_gUCk(x)},_S_gsGID:function(){var N=j._S_gUCk(x);if(\"\"==N){N=A._S_gsSID();A._S_sGID(N)}return N},_S_gCid:function(){try{var N=j._S_gMeta(\"publishid\");if(\"\"!=N){var P=N.split(\",\");if(P.length>0){if(P.length>=3){k=\"-9999-0-\"+P[1]+\"-\"+P[2]}return P[0]}}else{return\"0\"}}catch(O){return\"0\"}},_S_gAEC:function(){return j._S_gUCk(d)},_S_sAEC:function(N){if(\"\"==N){return}var O=A._S_gAEC();if(O.indexOf(N+\",\")<0){O=O+N+\",\"}j._S_sUCk(d,O,7)},_S_p2Bcn:function(R,Q){var P=new Date();var O=Q+\"?\"+R+\"&gUid_\"+P.getTime();var N=new Image();SUDA.img=N;N.src=O},_S_gSUP:function(){if(w!=\"\"){return w}var P=unescape(j._S_gUCk(J));if(P!=\"\"){var O=j._S_gKeyV(P,\"ag\",\"&\",\"\");var N=j._S_gKeyV(P,\"user\",\"&\",\"\");var Q=j._S_gKeyV(P,\"uid\",\"&\",\"\");var S=j._S_gKeyV(P,\"sex\",\"&\",\"\");var R=j._S_gKeyV(P,\"dob\",\"&\",\"\");w=O+\":\"+N+\":\"+Q+\":\"+S+\":\"+R;return w}else{return\"\"}},_S_gsLVisit:function(P){var R=j._S_gUCk(r);var Q=R.split(\":\");var S=\"\";if(Q.length>=6){if(P!=Q[4]){var O=new Date();var N=new Date(parseInt(Q[0]));Q[1]=parseInt(Q[1])+1;if(O.getMonth()!=N.getMonth()){Q[2]=1}else{Q[2]=parseInt(Q[2])+1}if(((O.getTime()-N.getTime())/86400000)>=7){Q[3]=1}else{if(O.getDay()<N.getDay()){Q[3]=1}else{Q[3]=parseInt(Q[3])+1}}S=Q[0]+\":\"+Q[1]+\":\"+Q[2]+\":\"+Q[3];Q[5]=Q[0];Q[0]=O.getTime();j._S_sUCk(r,Q[0]+\":\"+Q[1]+\":\"+Q[2]+\":\"+Q[3]+\":\"+P+\":\"+Q[5],360)}else{S=Q[5]+\":\"+Q[1]+\":\"+Q[2]+\":\"+Q[3]}}else{var O=new Date();S=\":1:1:1\";j._S_sUCk(r,O.getTime()+S+\":\"+P+\":\",360)}return S},_S_gUOR:function(){var N=j._S_gUCk(G);var O=N.split(\":\");if(O.length>=2){return O[0]}else{return\"\"}},_S_sUOR:function(){var R=j._S_gUCk(G),W=\"\",O=\"\",V=\"\",Q=\"\";var X=/[&|?]c=spr(_[A-Za-z0-9]{1,}){3,}/;var S=new Date();if(q.match(X)){V=q.match(X)[0]}else{if(z.match(X)){V=z.match(X)[0]}}if(V!=\"\"){V=V.substr(3)+\":\"+S.getTime()}if(R==\"\"){if(j._S_gUCk(r)==\"\"&&j._S_gUCk(r)==\"\"){W=j._S_gHost(z);O=j._S_gHost(q)}j._S_sUCk(G,W+\",\"+O+\",\"+V,365)}else{var T=0,U=R.split(\",\");if(U.length>=1){W=U[0]}if(U.length>=2){O=U[1]}if(U.length>=3){Q=U[2]}if(V!=\"\"){T=1}else{var P=Q.split(\":\");if(P.length>=2){var N=new Date(parseInt(P[1]));if(N.getTime()<(S.getTime()-86400000*30)){T=1}}}if(T){j._S_sUCk(G,W+\",\"+O+\",\"+V,365)}}},_S_gRef:function(){var N=/^[^\\?&#]*.swf([\\?#])?/;if((z==\"\")||(z.match(N))){var O=j._S_gKeyV(q,\"ref\",\"&\",\"\");if(O!=\"\"){return O}}return z},_S_MEvent:function(){if(M==0){M++;var O=j._S_gUCk(s);if(O==\"\"){O=0}O++;if(O<K){var N=/[&|?]c=spr(_[A-Za-z0-9]{2,}){3,}/;if(q.match(N)||z.match(N)){O=O+K}}j._S_sUCk(s,O)}},_S_gMET:function(){var N=j._S_gUCk(s);if(N==\"\"){N=0}return N},_S_gCInfo_v2:function(){var N=new Date();return\"sz:\"+screen.width+\"x\"+screen.height+\"|dp:\"+screen.colorDepth+\"|ac:\"+f.nav.appCodeName+\"|an:\"+b+\"|cpu:\"+f.nav.cpuClass+\"|pf:\"+f.nav.platform+\"|jv:\"+j._S_gJVer(u,b)+\"|ct:\"+j._S_gConType()+\"|lg:\"+f.nav.systemLanguage+\"|tz:\"+N.getTimezoneOffset()/60+\"|fv:\"+j._S_gFVer(f.nav)},_S_gPInfo_v2:function(N,O){if((undefined==N)||(\"\"==N)){N=A._S_gCid()+k}return\"pid:\"+N+\"|st:\"+A._S_gMET()+\"|et:\"+E+\"|ref:\"+escape(O)+\"|hp:\"+j._S_isHome(q)+\"|PGLS:\"+j._S_gMeta(\"stencil\")+\"|ZT:\"+escape(j._S_gTJZTMeta())+\"|MT:\"+escape(j._S_gTJMTMeta())+\"|keys:\"},_S_gUInfo_v2:function(N){return\"vid:\"+N+\"|sid:\"+A._S_gsSID()+\"|lv:\"+A._S_gsLVisit(A._S_gsSID())+\"|un:\"+A._S_gSUP()+\"|uo:\"+A._S_gUOR()+\"|ae:\"+A._S_gAEC()},_S_gEXTInfo_v2:function(O,N){o=(undefined==O)?o:O;m=(undefined==N)?m:N;return\"ex1:\"+o+\"|ex2:\"+m},_S_pBeacon:function(R,Q,O){try{var T=A._S_gsGID();if(\"\"==T){if(H<1){setTimeout(function(){A._S_pBeacon(R,Q,O)},c);H++;return}else{T=A._S_gsSID();A._S_sGID(T)}}var V=\"V=2\";var S=A._S_gCInfo_v2();var X=A._S_gPInfo_v2(R,A._S_gRef());var P=A._S_gUInfo_v2(T);var N=A._S_gEXTInfo_v2(Q,O);var W=V+\"&CI=\"+S+\"&PI=\"+X+\"&UI=\"+P+\"&EX=\"+N;A._S_p2Bcn(W,D)}catch(U){}},_S_acTrack_i:function(N,P){if((\"\"==N)||(undefined==N)){return}A._S_sAEC(N);if(0==P){return}var O=\"AcTrack||\"+A._S_gGID()+\"||\"+A._S_gsSID()+\"||\"+A._S_gSUP()+\"||\"+N+\"||\";A._S_p2Bcn(O,L)},_S_uaTrack_i:function(P,N){var O=\"UATrack||\"+A._S_gGID()+\"||\"+A._S_gsSID()+\"||\"+A._S_gSUP()+\"||\"+P+\"||\"+N+\"||\"+A._S_gRef()+\"||\";A._S_p2Bcn(O,L)}};if(M==0){if(\"MSIE\"==b){SSL.Global.doc.attachEvent(\"onclick\",A._S_MEvent);SSL.Global.doc.attachEvent(\"onmousemove\",A._S_MEvent);SSL.Global.doc.attachEvent(\"onscroll\",A._S_MEvent)}else{SSL.Global.doc.addEventListener(\"click\",A._S_MEvent,false);SSL.Global.doc.addEventListener(\"mousemove\",A._S_MEvent,false);SSL.Global.doc.addEventListener(\"scroll\",A._S_MEvent,false)}}A._S_sUOR();return{_S_pSt:function(N,P,O){try{if((j._S_isFreshMeta())||(j._S_isIFrameSelf(l,a))){return}++E;A._S_gsSID();setTimeout(function(){A._S_pBeacon(N,P,O,0)},e)}catch(Q){}},_S_pStM:function(N,P,O){++E;A._S_pBeacon(N,((undefined==P)?A._S_upExt1():P),O)},_S_acTrack:function(N,P){try{if((undefined!=N)&&(\"\"!=N)){setTimeout(function(){A._S_acTrack_i(N,P)},e)}}catch(O){}},_S_uaTrack:function(O,N){try{if(undefined==O){O=\"\"}if(undefined==N){N=\"\"}if((\"\"!=O)||(\"\"!=N)){setTimeout(function(){A._S_uaTrack_i(O,N)},e)}}catch(P){}},_S_gCk:function(N){return j._S_gUCk(N)},_S_sCk:function(Q,N,O,P){return j._S_sUCk(Q,N,O,P)},_S_gGlobalID:function(){return A._S_gGID()},_S_gSessionID:function(){return A._S_gsSID()}}}var GB_SUDA;if(GB_SUDA==null){GB_SUDA=new SUDA({})}var _S_PID_=\"\";function _S_pSt(a,c,b){GB_SUDA._S_pSt(a,c,b)}function _S_pStM(a,c,b){GB_SUDA._S_pStM(a,c,b)}function _S_acTrack(a){GB_SUDA._S_acTrack(a,1)}function _S_uaTrack(b,a){GB_SUDA._S_uaTrack(b,a)}(function(){function a(b,e,d){var c=document.createElement(\"script\");if(typeof e===\"string\"){c.charset=e}c.onreadystatechange=c.onload=function(){if(!this.readyState||this.readyState==\"loaded\"||this.readyState==\"complete\"){if(e&&typeof e===\"function\"){e()}if(d&&typeof d===\"function\"){d()}c.onreadystatechange=c.onload=null;c.parentNode.removeChild(c)}};c.src=b;document.getElementsByTagName(\"head\")[0].appendChild(c)}a(\"https://d3.sina.com.cn/shh/ws/2012/xb/gladnews_run.js\")})();\n",
      "</script> \n",
      "<script type=\"text/javascript\"> \n",
      "GB_SUDA._S_pSt(\"\");\n",
      "</script> \n",
      "<noScript> \n",
      "<div style='position:absolute;top:0;left:0;width:0;height:0;visibility:hidden'><img width=0 height=0 src='//beacon.sina.com.cn/a.gif?noScript' border='0' alt='' /></div> \n",
      "</noScript> \n",
      "<!-- SUDA_CODE_END -->\n",
      "\n",
      "<div id=\"wrap\">\n",
      "\t\n",
      "\t<div class=\"sidead\" style=\"height:0px\"><div style=\"position:relative; left:-170px;top:20px; width:160px;cursor:pointer;\">\n",
      "\t\t\n",
      "<div id=\"div-gpt-ad-1443060329962-2\">\n",
      "<script type=\"text/javascript\">\n",
      "googletag.cmd.push(function() { googletag.display(\"div-gpt-ad-1443060329962-2\"); });\n",
      "</script>\n",
      "</div>\n",
      "\t\t</div></div>\n",
      "\t\n",
      "\t<div class=\"sidead\" style=\"height:0px\"><div style=\"position:relative; left:790px;top:20px; width:160px;cursor:pointer;\">\n",
      "\t\t\n",
      "<div id=\"div-gpt-ad-1443060329962-3\">\n",
      "<script type=\"text/javascript\">\n",
      "googletag.cmd.push(function() { googletag.display(\"div-gpt-ad-1443060329962-3\"); });\n",
      "</script>\n",
      "</div>\n",
      "</div></div>\n",
      "\t<!-- Header -->\n",
      "\t<div id=\"header\">\n",
      "\t\t<h1><em>新浪一切由你开始</em></h1>\n",
      "\t\t<ul>\n",
      "\t\t<li><a href=\"http://english.sina.com/index.html\" onclick=\"_S_uaTrack('global_guide', 'english');\">Sina English</a></li>\n",
      "\t\t</ul>\n",
      "\t\t<div class=\"clearDiv\"></div>\n",
      "\t</div>\n",
      "\n",
      "\t<!-- Map -->\n",
      "\t<div id=\"map\">\n",
      "\t\t<img src=\"//ui.sina.com/assets/img/www/worldmap.jpg\" alt=\"\" name=\"map1\" width=\"775\" height=\"248\" border=\"0\" usemap=\"#Map1\" id=\"Map1\" />\n",
      "\n",
      "<map name=\"Map1\" id=\"\">\n",
      "<area shape=\"rect\" coords=\"173,81,299,137\" href=\"https://home.sina.com\" target=\"_self\" alt=\"北美新浪\" title=\"北美新浪\" onclick=\"_S_uaTrack('global_guide', 'us');\" />\n",
      "<area shape=\"rect\" coords=\"468,81,572,129\" href=\"http://www.sina.com.cn\" target=\"_self\" alt=\"北京新浪\" title=\"北京新浪\" onclick=\"_S_uaTrack('global_guide', 'beijing');\" />\n",
      "<area shape=\"rect\" coords=\"482,145,578,184\" href=\"http://www.sina.com.hk\" target=\"_self\" alt=\"香港新浪\" title=\"香港新浪\" onclick=\"_S_uaTrack('global_guide', 'hongkong');\" />\n",
      "<area shape=\"rect\" coords=\"658,123,755,162\" href=\"http://www.sina.com.tw\" target=\"_self\" alt=\"台湾新浪\" title=\"台湾新浪\" onclick=\"_S_uaTrack('global_guide', 'taipei');\" />\n",
      "</map>\n",
      "\t</div>\n",
      "\n",
      "\t<!-- Channels -->\n",
      "\t<div id=\"channel\">\n",
      "\t\t<img src=\"//img.sina.com/sinausa/img/Navi_180321_2.gif\" alt=\"\" width=\"775\" height=\"44\" border=\"0\" usemap=\"#Map4\"  id=\"Map4\" />\n",
      "<!--<img src=\"//n.sinaimg.cn/ussina/www/Navi_171211.gif\" alt=\"\" width=\"775\" height=\"44\" border=\"0\" usemap=\"#Map4\"  id=\"Map4\" />-->\n",
      "\n",
      "<map name=\"Map4\" id=\"\">\n",
      "<area shape=\"rect\" target=\"_self\" alt=\"微博\" coords=\"4,3,76,35\" href=\"http://us.weibo.com\" onclick=\"_S_uaTrack('global_guide', 'weibo');\" />\n",
      "<area shape=\"rect\" target=\"_self\" alt=\"新聞\" coords=\"95,3,166,37\" href=\"https://dailynews.sina.com/\" onclick=\"_S_uaTrack('global_guide', 'dailynews');\" />\n",
      "<area shape=\"rect\" target=\"_self\" alt=\"財經\" coords=\"171,2,241,38\" href=\"https://finance.sina.com/\" onclick=\"_S_uaTrack('global_guide', 'finance');\" />\n",
      "<area shape=\"rect\" target=\"_self\" alt=\"娛樂\" coords=\"257,3,328,39\" href=\"http://ent.sina.com/\" onclick=\"_S_uaTrack('global_guide', 'ent');\" />\n",
      "<area shape=\"rect\" target=\"_self\" alt=\"专题\" coords=\"335,3,417,38\" href=\"http://dailynews.sina.com/gb/focusnews/\" onclick=\"_S_uaTrack('global_guide', 'v');\" />\n",
      "<!--<area shape=\"rect\" target=\"_self\" alt=\"節日\" coords=\"335,3,417,38\" href=\"http://zt.sina.com/springfestival2019\" onclick=\"_S_uaTrack('global_guide', 'v');\" />-->\n",
      "<!--<area shape=\"rect\" target=\"_self\" alt=\"視頻\" coords=\"335,3,417,38\" href=\"https://www.youtube.com/user/sinapremium\" onclick=\"_S_uaTrack('global_guide', 'v');\" />-->\n",
      "<area shape=\"rect\" target=\"_self\" alt=\"地產\" coords=\"432,3,496,36\" href=\"http://house.sina.com/\" onclick=\"_S_uaTrack('global_guide', 'house');\" />\n",
      "<!--<area shape=\"rect\" target=\"_self\" alt=\"視頻\" coords=\"509,2,582,35\" href=\"http://video.sina.com/\" onclick=\"_S_uaTrack('global_guide', 'v');\" />-->\n",
      "<area shape=\"rect\" target=\"_self\" alt=\"排行\" coords=\"509,2,582,35\" href=\"http://dailynews.sina.com/gb/topnews/\" onclick=\"_S_uaTrack('global_guide', 'v');\" />\n",
      "<area shape=\"rect\" target=\"_self\" alt=\"交友\" coords=\"590,2,679,33\" href=\"https://sina.2redbeans.com/zh-CN/chinese-dating?utm_source=sina&utm_medium=text&utm_campaign=sina_sidebar\" onclick=\"_S_uaTrack('global_guide', 'match');\" />\n",
      "<area shape=\"rect\" target=\"_self\" alt=\"POP\" coords=\"688,1,772,35\" href=\"http://ipop.sina.com/\" onclick=\"_S_uaTrack('global_guide', 'deals');\" />\n",
      "</map>\n",
      "\t</div>\n",
      "\n",
      "\t<!-- ads (banners/buttons) -->\n",
      "\t<div id=\"ads\">\n",
      "\t\t<ul>\n",
      "\t\t\t<li class=\"bnr728\">\n",
      "\t\t\t\t\n",
      "<div id=\"div-gpt-ad-1443060329962-0\">\n",
      "<script type=\"text/javascript\">\n",
      "googletag.cmd.push(function() { googletag.display(\"div-gpt-ad-1443060329962-0\"); });\n",
      "</script>\n",
      "</div>\n",
      "\t\t\t</li>\n",
      "\t\t\t\n",
      "\t\t\t<li class=\"bnr120\">\n",
      "\t\t\t\t\n",
      "<a href=\"http://ipop.sina.com\" target=\"_blank\"><img src=\"//n.sinaimg.cn/default/20170821/8YdA-fykcypq2328517.jpg\"></a>\n",
      "\n",
      "\t\t\t</li>\n",
      "\t\t\t<li class=\"bnr120\">\n",
      "\t\t\t\t\n",
      "<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=22225597&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//img.sina.com/sinausa/180/w120h60/20190824/d41d-icqznha4078871.gif\"></a>\n",
      "\n",
      "\t\t\t</li>\n",
      "\t\t\t<li class=\"bnr120\">\n",
      "\t\t\t\t\n",
      "<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=22388917&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//img.sina.com/sinausa/180/w120h60/20190319/pB5O-hukwxnv4216443.jpg\"></a>\n",
      "\t\n",
      "\t\t\t</li>\n",
      "\t\t\t<li class=\"bnr120\">\n",
      "\t\t\t\t\n",
      "<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=47668597&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//n.sinaimg.cn/default/20170821/4r7x-fykcpru8742144.jpg\"></a>\n",
      "\n",
      "\t\t\t</li>\n",
      "\t\t\t\n",
      "\t\t\t<li class=\"bnr120\">\n",
      "\t\t\t\t\n",
      "<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=5079025846&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//img.sina.com/sinausa/180/w120h60/20191024/d41d-ihmipqv9404630.gif\"></a>\n",
      "\n",
      "\t\t\t</li>\n",
      "\t\t\t<li class=\"bnr120\">\n",
      "\t\t\t\t\n",
      "<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=4455456906&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//img.sina.com/default/180/w120h60/20180824/-Ivy-hicsiav9588909.gif\"></a>\n",
      "\n",
      "\t\t\t</li>\n",
      "\t\t\t<li class=\"bnr120\">\n",
      "\t\t\t\t\n",
      "<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=175623037&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//n.sinaimg.cn/default/20171124/MqVp-fypceiq1333642.jpg\"></a>\n",
      "\n",
      "\t\t\t</li>\n",
      "\t\t\t<li class=\"bnr120\">\n",
      "\t\t\t\t\n",
      "<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=5205243782&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//img.sina.com/sinausa/180/w120h60/20191024/d41d-ihmipqv9405500.gif\"></a>\n",
      "\n",
      "\t\t\t</li>\n",
      "\t\t\t<li class=\"bnr120\">\n",
      "\t\t\t\t\n",
      "<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=53873917&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//n.sinaimg.cn/default/20170821/dozi-fykcypq2216137.gif\"></a>\n",
      "\n",
      "\t\t\t</li>\n",
      "\t\t\t\t<li class=\"bnr120\">\n",
      "\t\t\t\t\n",
      "<a href=\"http://pubads.g.doubleclick.net/gampad/clk?id=64076077&iu=/4461/us.clickcommand\" target=\"_blank\"><img src=\"//img.sina.com/sinausa/180/w120h60/20191010/d41d-ifrwayx3298899.gif\"></a>\n",
      "\t\n",
      "\t\t\t</li>\n",
      "\t\t\t\t\t\n",
      "\t\t\n",
      "\t\t</ul>\n",
      "\t\t<ul>\n",
      "\t\t\t<li class=\"bnr728\">\n",
      "\t\t\t\t\n",
      "<div id=\"div-gpt-ad-1443060329962-1\">\n",
      "<script type=\"text/javascript\">\n",
      "googletag.cmd.push(function() { googletag.display(\"div-gpt-ad-1443060329962-1\"); });\n",
      "</script>\n",
      "</div>\t\t\t\n",
      "\t\t\t</li>\n",
      "\t\t</ul>\n",
      "\t\t\n",
      "\t\t<div class=\"clearDiv\"></div>\n",
      "\t</div>\n",
      "\t<!-- END . ads -->\n",
      "\n",
      "\t<!-- Footer -->\n",
      "\t<div id=\"footer\">\n",
      "\t\t<ul>\n",
      "\t\t<li><a href=\"http://corp.sina.com.cn/eng/\">About SINA</a></li>\n",
      "\t\t<li>|</li>\n",
      "\t\t<li><a href=\"http://corp.sina.com.cn/eng/sina_rela_eng.htm\">Investor</a></li>\n",
      "\t\t<li>|</li>\n",
      "\t\t<li><a href=\"http://mediakit.sina.com/\">Media Kit</a></li>\n",
      "\t\t<li>|</li>\n",
      "\t\t<li><a href=\"http://mediakit.sina.com/contact.html\">Comments or Question?</a></li>\n",
      "\t\t<br /><br />\n",
      "\t\t<li class=\"copyright\">Copyright &copy; 1996-2019 SINA Corporation, All Rights Reserved</li>\n",
      "\t\t</ul>\n",
      "\t</div>\n",
      "\n",
      "</div>\n",
      "\n",
      "<!--floating video-->\n",
      "<div id=\"flvideo\"></div>\n",
      "<!-- START Nielsen Online SiteCensus V6.0 -->\n",
      "<script type=\"text/javascript\" src=\"//secure-us.imrworldwide.com/v60.js\"></script>\n",
      "<script type=\"text/javascript\">\n",
      "if(window.nol_t){\n",
      "var pvar = { cid: \"us-sina\", content: \"0\", server: \"secure-us\" };\n",
      "var feat = { surveys_enabled: 1, sample_rate: 0.1 };\n",
      "var trac = nol_t(pvar, feat);\n",
      "trac.record().post().do_sample();\n",
      "}\n",
      "</script>\n",
      "<noscript>\n",
      "<div>\n",
      "<img src=\"//secure-us.imrworldwide.com/cgi-bin/m?ci=us-sina&amp;cg=0&amp;cc=1&amp;ts=noscript\" width=\"1\" height=\"1\" alt=\"\" />\n",
      "</div>\n",
      "</noscript>\n",
      "<!-- END Nielsen Online SiteCensus V6.0 -->\n",
      "\n",
      "<script async src='https://www.google-analytics.com/analytics.js'></script>\n",
      "<script>\n",
      "\twindow.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;\n",
      "\t//--Aggregate GA--//\n",
      "\tga('create', 'UA-42804763-1', 'sina.com');\n",
      "\tga('send', 'pageview');\n",
      "\t\n",
      "\t//--Individual US Homepage Channel--//\n",
      "\tga('create', 'UA-39768672-1', {'name': 'USHomepageChannel'});\n",
      "\tga('USHomepageChannel.send', 'pageview');\n",
      "</script>\n",
      "<img src=\"//pubads.g.doubleclick.net/activity;dc_iu=/4461/DFPAudiencePixel;ord=1572510715;dc_seg=820282358?\" width=1 height=1 border=0/>\n",
      "<script type='text/javascript'>\n",
      "var axel = Math.random() + '';\n",
      "var a = axel * 10000000000000;\n",
      "document.write('');\n",
      "</script>\n",
      "<noscript>\n",
      "<img src=\"//pubads.g.doubleclick.net/activity;dc_iu=/4461/DFPAudiencePixel;ord=1;dc_seg=820282358?\" width=1 height=1 border=0/>\n",
      "</noscript>\n",
      "</body>\n",
      "\n",
      "</html>\n"
     ]
    }
   ],
   "source": [
    "print(r.content.decode('utf-8'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## `r'there'`：字符串（正则常用）\n",
    "\n",
    "在Python的`string`前面加上`'r'`， 是为了告诉编译器这个`string`是个`raw string`，不要转义`backslash '\\'` 。 例如，`\\n` 在raw string中，是两个字符，`\\`和`n`， 而不会转意为换行符。由于正则表达式和 `\\` 会有冲突，因此，当一个字符串使用了正则表达式后，最好在前面加上`'r'`。\n",
    "\n",
    "正则是计算机语言中非常常用的那么一套迷你语言。\n",
    "\n",
    "关于正则的用法可以看一下[正则表达式]()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## `'sting'`\n",
    "\n",
    "python中字符串对象提供了很多方法来操作字符串，功能相当丰富。\n",
    "\n",
    "# 参考\n",
    "链接：https://docs.python.org/3/library/stdtypes.html#string-methods"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['__add__',\n",
       " '__class__',\n",
       " '__contains__',\n",
       " '__delattr__',\n",
       " '__dir__',\n",
       " '__doc__',\n",
       " '__eq__',\n",
       " '__format__',\n",
       " '__ge__',\n",
       " '__getattribute__',\n",
       " '__getitem__',\n",
       " '__getnewargs__',\n",
       " '__gt__',\n",
       " '__hash__',\n",
       " '__init__',\n",
       " '__init_subclass__',\n",
       " '__iter__',\n",
       " '__le__',\n",
       " '__len__',\n",
       " '__lt__',\n",
       " '__mod__',\n",
       " '__mul__',\n",
       " '__ne__',\n",
       " '__new__',\n",
       " '__reduce__',\n",
       " '__reduce_ex__',\n",
       " '__repr__',\n",
       " '__rmod__',\n",
       " '__rmul__',\n",
       " '__setattr__',\n",
       " '__sizeof__',\n",
       " '__str__',\n",
       " '__subclasshook__',\n",
       " 'capitalize',\n",
       " 'casefold',\n",
       " 'center',\n",
       " 'count',\n",
       " 'encode',\n",
       " 'endswith',\n",
       " 'expandtabs',\n",
       " 'find',\n",
       " 'format',\n",
       " 'format_map',\n",
       " 'index',\n",
       " 'isalnum',\n",
       " 'isalpha',\n",
       " 'isascii',\n",
       " 'isdecimal',\n",
       " 'isdigit',\n",
       " 'isidentifier',\n",
       " 'islower',\n",
       " 'isnumeric',\n",
       " 'isprintable',\n",
       " 'isspace',\n",
       " 'istitle',\n",
       " 'isupper',\n",
       " 'join',\n",
       " 'ljust',\n",
       " 'lower',\n",
       " 'lstrip',\n",
       " 'maketrans',\n",
       " 'partition',\n",
       " 'replace',\n",
       " 'rfind',\n",
       " 'rindex',\n",
       " 'rjust',\n",
       " 'rpartition',\n",
       " 'rsplit',\n",
       " 'rstrip',\n",
       " 'split',\n",
       " 'splitlines',\n",
       " 'startswith',\n",
       " 'strip',\n",
       " 'swapcase',\n",
       " 'title',\n",
       " 'translate',\n",
       " 'upper',\n",
       " 'zfill']"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dir(str)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on class str in module builtins:\n",
      "\n",
      "class str(object)\n",
      " |  str(object='') -> str\n",
      " |  str(bytes_or_buffer[, encoding[, errors]]) -> str\n",
      " |  \n",
      " |  Create a new string object from the given object. If encoding or\n",
      " |  errors is specified, then the object must expose a data buffer\n",
      " |  that will be decoded using the given encoding and error handler.\n",
      " |  Otherwise, returns the result of object.__str__() (if defined)\n",
      " |  or repr(object).\n",
      " |  encoding defaults to sys.getdefaultencoding().\n",
      " |  errors defaults to 'strict'.\n",
      " |  \n",
      " |  Methods defined here:\n",
      " |  \n",
      " |  __add__(self, value, /)\n",
      " |      Return self+value.\n",
      " |  \n",
      " |  __contains__(self, key, /)\n",
      " |      Return key in self.\n",
      " |  \n",
      " |  __eq__(self, value, /)\n",
      " |      Return self==value.\n",
      " |  \n",
      " |  __format__(self, format_spec, /)\n",
      " |      Return a formatted version of the string as described by format_spec.\n",
      " |  \n",
      " |  __ge__(self, value, /)\n",
      " |      Return self>=value.\n",
      " |  \n",
      " |  __getattribute__(self, name, /)\n",
      " |      Return getattr(self, name).\n",
      " |  \n",
      " |  __getitem__(self, key, /)\n",
      " |      Return self[key].\n",
      " |  \n",
      " |  __getnewargs__(...)\n",
      " |  \n",
      " |  __gt__(self, value, /)\n",
      " |      Return self>value.\n",
      " |  \n",
      " |  __hash__(self, /)\n",
      " |      Return hash(self).\n",
      " |  \n",
      " |  __iter__(self, /)\n",
      " |      Implement iter(self).\n",
      " |  \n",
      " |  __le__(self, value, /)\n",
      " |      Return self<=value.\n",
      " |  \n",
      " |  __len__(self, /)\n",
      " |      Return len(self).\n",
      " |  \n",
      " |  __lt__(self, value, /)\n",
      " |      Return self<value.\n",
      " |  \n",
      " |  __mod__(self, value, /)\n",
      " |      Return self%value.\n",
      " |  \n",
      " |  __mul__(self, value, /)\n",
      " |      Return self*value.\n",
      " |  \n",
      " |  __ne__(self, value, /)\n",
      " |      Return self!=value.\n",
      " |  \n",
      " |  __repr__(self, /)\n",
      " |      Return repr(self).\n",
      " |  \n",
      " |  __rmod__(self, value, /)\n",
      " |      Return value%self.\n",
      " |  \n",
      " |  __rmul__(self, value, /)\n",
      " |      Return value*self.\n",
      " |  \n",
      " |  __sizeof__(self, /)\n",
      " |      Return the size of the string in memory, in bytes.\n",
      " |  \n",
      " |  __str__(self, /)\n",
      " |      Return str(self).\n",
      " |  \n",
      " |  capitalize(self, /)\n",
      " |      Return a capitalized version of the string.\n",
      " |      \n",
      " |      More specifically, make the first character have upper case and the rest lower\n",
      " |      case.\n",
      " |  \n",
      " |  casefold(self, /)\n",
      " |      Return a version of the string suitable for caseless comparisons.\n",
      " |  \n",
      " |  center(self, width, fillchar=' ', /)\n",
      " |      Return a centered string of length width.\n",
      " |      \n",
      " |      Padding is done using the specified fill character (default is a space).\n",
      " |  \n",
      " |  count(...)\n",
      " |      S.count(sub[, start[, end]]) -> int\n",
      " |      \n",
      " |      Return the number of non-overlapping occurrences of substring sub in\n",
      " |      string S[start:end].  Optional arguments start and end are\n",
      " |      interpreted as in slice notation.\n",
      " |  \n",
      " |  encode(self, /, encoding='utf-8', errors='strict')\n",
      " |      Encode the string using the codec registered for encoding.\n",
      " |      \n",
      " |      encoding\n",
      " |        The encoding in which to encode the string.\n",
      " |      errors\n",
      " |        The error handling scheme to use for encoding errors.\n",
      " |        The default is 'strict' meaning that encoding errors raise a\n",
      " |        UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and\n",
      " |        'xmlcharrefreplace' as well as any other name registered with\n",
      " |        codecs.register_error that can handle UnicodeEncodeErrors.\n",
      " |  \n",
      " |  endswith(...)\n",
      " |      S.endswith(suffix[, start[, end]]) -> bool\n",
      " |      \n",
      " |      Return True if S ends with the specified suffix, False otherwise.\n",
      " |      With optional start, test S beginning at that position.\n",
      " |      With optional end, stop comparing S at that position.\n",
      " |      suffix can also be a tuple of strings to try.\n",
      " |  \n",
      " |  expandtabs(self, /, tabsize=8)\n",
      " |      Return a copy where all tab characters are expanded using spaces.\n",
      " |      \n",
      " |      If tabsize is not given, a tab size of 8 characters is assumed.\n",
      " |  \n",
      " |  find(...)\n",
      " |      S.find(sub[, start[, end]]) -> int\n",
      " |      \n",
      " |      Return the lowest index in S where substring sub is found,\n",
      " |      such that sub is contained within S[start:end].  Optional\n",
      " |      arguments start and end are interpreted as in slice notation.\n",
      " |      \n",
      " |      Return -1 on failure.\n",
      " |  \n",
      " |  format(...)\n",
      " |      S.format(*args, **kwargs) -> str\n",
      " |      \n",
      " |      Return a formatted version of S, using substitutions from args and kwargs.\n",
      " |      The substitutions are identified by braces ('{' and '}').\n",
      " |  \n",
      " |  format_map(...)\n",
      " |      S.format_map(mapping) -> str\n",
      " |      \n",
      " |      Return a formatted version of S, using substitutions from mapping.\n",
      " |      The substitutions are identified by braces ('{' and '}').\n",
      " |  \n",
      " |  index(...)\n",
      " |      S.index(sub[, start[, end]]) -> int\n",
      " |      \n",
      " |      Return the lowest index in S where substring sub is found, \n",
      " |      such that sub is contained within S[start:end].  Optional\n",
      " |      arguments start and end are interpreted as in slice notation.\n",
      " |      \n",
      " |      Raises ValueError when the substring is not found.\n",
      " |  \n",
      " |  isalnum(self, /)\n",
      " |      Return True if the string is an alpha-numeric string, False otherwise.\n",
      " |      \n",
      " |      A string is alpha-numeric if all characters in the string are alpha-numeric and\n",
      " |      there is at least one character in the string.\n",
      " |  \n",
      " |  isalpha(self, /)\n",
      " |      Return True if the string is an alphabetic string, False otherwise.\n",
      " |      \n",
      " |      A string is alphabetic if all characters in the string are alphabetic and there\n",
      " |      is at least one character in the string.\n",
      " |  \n",
      " |  isascii(self, /)\n",
      " |      Return True if all characters in the string are ASCII, False otherwise.\n",
      " |      \n",
      " |      ASCII characters have code points in the range U+0000-U+007F.\n",
      " |      Empty string is ASCII too.\n",
      " |  \n",
      " |  isdecimal(self, /)\n",
      " |      Return True if the string is a decimal string, False otherwise.\n",
      " |      \n",
      " |      A string is a decimal string if all characters in the string are decimal and\n",
      " |      there is at least one character in the string.\n",
      " |  \n",
      " |  isdigit(self, /)\n",
      " |      Return True if the string is a digit string, False otherwise.\n",
      " |      \n",
      " |      A string is a digit string if all characters in the string are digits and there\n",
      " |      is at least one character in the string.\n",
      " |  \n",
      " |  isidentifier(self, /)\n",
      " |      Return True if the string is a valid Python identifier, False otherwise.\n",
      " |      \n",
      " |      Use keyword.iskeyword() to test for reserved identifiers such as \"def\" and\n",
      " |      \"class\".\n",
      " |  \n",
      " |  islower(self, /)\n",
      " |      Return True if the string is a lowercase string, False otherwise.\n",
      " |      \n",
      " |      A string is lowercase if all cased characters in the string are lowercase and\n",
      " |      there is at least one cased character in the string.\n",
      " |  \n",
      " |  isnumeric(self, /)\n",
      " |      Return True if the string is a numeric string, False otherwise.\n",
      " |      \n",
      " |      A string is numeric if all characters in the string are numeric and there is at\n",
      " |      least one character in the string.\n",
      " |  \n",
      " |  isprintable(self, /)\n",
      " |      Return True if the string is printable, False otherwise.\n",
      " |      \n",
      " |      A string is printable if all of its characters are considered printable in\n",
      " |      repr() or if it is empty.\n",
      " |  \n",
      " |  isspace(self, /)\n",
      " |      Return True if the string is a whitespace string, False otherwise.\n",
      " |      \n",
      " |      A string is whitespace if all characters in the string are whitespace and there\n",
      " |      is at least one character in the string.\n",
      " |  \n",
      " |  istitle(self, /)\n",
      " |      Return True if the string is a title-cased string, False otherwise.\n",
      " |      \n",
      " |      In a title-cased string, upper- and title-case characters may only\n",
      " |      follow uncased characters and lowercase characters only cased ones.\n",
      " |  \n",
      " |  isupper(self, /)\n",
      " |      Return True if the string is an uppercase string, False otherwise.\n",
      " |      \n",
      " |      A string is uppercase if all cased characters in the string are uppercase and\n",
      " |      there is at least one cased character in the string.\n",
      " |  \n",
      " |  join(self, iterable, /)\n",
      " |      Concatenate any number of strings.\n",
      " |      \n",
      " |      The string whose method is called is inserted in between each given string.\n",
      " |      The result is returned as a new string.\n",
      " |      \n",
      " |      Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'\n",
      " |  \n",
      " |  ljust(self, width, fillchar=' ', /)\n",
      " |      Return a left-justified string of length width.\n",
      " |      \n",
      " |      Padding is done using the specified fill character (default is a space).\n",
      " |  \n",
      " |  lower(self, /)\n",
      " |      Return a copy of the string converted to lowercase.\n",
      " |  \n",
      " |  lstrip(self, chars=None, /)\n",
      " |      Return a copy of the string with leading whitespace removed.\n",
      " |      \n",
      " |      If chars is given and not None, remove characters in chars instead.\n",
      " |  \n",
      " |  partition(self, sep, /)\n",
      " |      Partition the string into three parts using the given separator.\n",
      " |      \n",
      " |      This will search for the separator in the string.  If the separator is found,\n",
      " |      returns a 3-tuple containing the part before the separator, the separator\n",
      " |      itself, and the part after it.\n",
      " |      \n",
      " |      If the separator is not found, returns a 3-tuple containing the original string\n",
      " |      and two empty strings.\n",
      " |  \n",
      " |  replace(self, old, new, count=-1, /)\n",
      " |      Return a copy with all occurrences of substring old replaced by new.\n",
      " |      \n",
      " |        count\n",
      " |          Maximum number of occurrences to replace.\n",
      " |          -1 (the default value) means replace all occurrences.\n",
      " |      \n",
      " |      If the optional argument count is given, only the first count occurrences are\n",
      " |      replaced.\n",
      " |  \n",
      " |  rfind(...)\n",
      " |      S.rfind(sub[, start[, end]]) -> int\n",
      " |      \n",
      " |      Return the highest index in S where substring sub is found,\n",
      " |      such that sub is contained within S[start:end].  Optional\n",
      " |      arguments start and end are interpreted as in slice notation.\n",
      " |      \n",
      " |      Return -1 on failure.\n",
      " |  \n",
      " |  rindex(...)\n",
      " |      S.rindex(sub[, start[, end]]) -> int\n",
      " |      \n",
      " |      Return the highest index in S where substring sub is found,\n",
      " |      such that sub is contained within S[start:end].  Optional\n",
      " |      arguments start and end are interpreted as in slice notation.\n",
      " |      \n",
      " |      Raises ValueError when the substring is not found.\n",
      " |  \n",
      " |  rjust(self, width, fillchar=' ', /)\n",
      " |      Return a right-justified string of length width.\n",
      " |      \n",
      " |      Padding is done using the specified fill character (default is a space).\n",
      " |  \n",
      " |  rpartition(self, sep, /)\n",
      " |      Partition the string into three parts using the given separator.\n",
      " |      \n",
      " |      This will search for the separator in the string, starting at the end. If\n",
      " |      the separator is found, returns a 3-tuple containing the part before the\n",
      " |      separator, the separator itself, and the part after it.\n",
      " |      \n",
      " |      If the separator is not found, returns a 3-tuple containing two empty strings\n",
      " |      and the original string.\n",
      " |  \n",
      " |  rsplit(self, /, sep=None, maxsplit=-1)\n",
      " |      Return a list of the words in the string, using sep as the delimiter string.\n",
      " |      \n",
      " |        sep\n",
      " |          The delimiter according which to split the string.\n",
      " |          None (the default value) means split according to any whitespace,\n",
      " |          and discard empty strings from the result.\n",
      " |        maxsplit\n",
      " |          Maximum number of splits to do.\n",
      " |          -1 (the default value) means no limit.\n",
      " |      \n",
      " |      Splits are done starting at the end of the string and working to the front.\n",
      " |  \n",
      " |  rstrip(self, chars=None, /)\n",
      " |      Return a copy of the string with trailing whitespace removed.\n",
      " |      \n",
      " |      If chars is given and not None, remove characters in chars instead.\n",
      " |  \n",
      " |  split(self, /, sep=None, maxsplit=-1)\n",
      " |      Return a list of the words in the string, using sep as the delimiter string.\n",
      " |      \n",
      " |      sep\n",
      " |        The delimiter according which to split the string.\n",
      " |        None (the default value) means split according to any whitespace,\n",
      " |        and discard empty strings from the result.\n",
      " |      maxsplit\n",
      " |        Maximum number of splits to do.\n",
      " |        -1 (the default value) means no limit.\n",
      " |  \n",
      " |  splitlines(self, /, keepends=False)\n",
      " |      Return a list of the lines in the string, breaking at line boundaries.\n",
      " |      \n",
      " |      Line breaks are not included in the resulting list unless keepends is given and\n",
      " |      true.\n",
      " |  \n",
      " |  startswith(...)\n",
      " |      S.startswith(prefix[, start[, end]]) -> bool\n",
      " |      \n",
      " |      Return True if S starts with the specified prefix, False otherwise.\n",
      " |      With optional start, test S beginning at that position.\n",
      " |      With optional end, stop comparing S at that position.\n",
      " |      prefix can also be a tuple of strings to try.\n",
      " |  \n",
      " |  strip(self, chars=None, /)\n",
      " |      Return a copy of the string with leading and trailing whitespace remove.\n",
      " |      \n",
      " |      If chars is given and not None, remove characters in chars instead.\n",
      " |  \n",
      " |  swapcase(self, /)\n",
      " |      Convert uppercase characters to lowercase and lowercase characters to uppercase.\n",
      " |  \n",
      " |  title(self, /)\n",
      " |      Return a version of the string where each word is titlecased.\n",
      " |      \n",
      " |      More specifically, words start with uppercased characters and all remaining\n",
      " |      cased characters have lower case.\n",
      " |  \n",
      " |  translate(self, table, /)\n",
      " |      Replace each character in the string using the given translation table.\n",
      " |      \n",
      " |        table\n",
      " |          Translation table, which must be a mapping of Unicode ordinals to\n",
      " |          Unicode ordinals, strings, or None.\n",
      " |      \n",
      " |      The table must implement lookup/indexing via __getitem__, for instance a\n",
      " |      dictionary or list.  If this operation raises LookupError, the character is\n",
      " |      left untouched.  Characters mapped to None are deleted.\n",
      " |  \n",
      " |  upper(self, /)\n",
      " |      Return a copy of the string converted to uppercase.\n",
      " |  \n",
      " |  zfill(self, width, /)\n",
      " |      Pad a numeric string with zeros on the left, to fill a field of the given width.\n",
      " |      \n",
      " |      The string is never truncated.\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Static methods defined here:\n",
      " |  \n",
      " |  __new__(*args, **kwargs) from builtins.type\n",
      " |      Create and return a new object.  See help(type) for accurate signature.\n",
      " |  \n",
      " |  maketrans(x, y=None, z=None, /)\n",
      " |      Return a translation table usable for str.translate().\n",
      " |      \n",
      " |      If there is only one argument, it must be a dictionary mapping Unicode\n",
      " |      ordinals (integers) or characters to Unicode ordinals, strings or None.\n",
      " |      Character keys will be then converted to ordinals.\n",
      " |      If there are two arguments, they must be strings of equal length, and\n",
      " |      in the resulting dictionary, each character in x will be mapped to the\n",
      " |      character at the same position in y. If there is a third argument, it\n",
      " |      must be a string, whose characters will be mapped to None in the result.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(str())\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 文本处理\n",
    "\n",
    "+ split()\n",
    "    + rsplit()\n",
    "+ partition()\n",
    "    + rpartition()\n",
    "+ replace()\n",
    "    + translate()\n",
    "    + maketrans()\n",
    "+ strip()\n",
    "    + lstrip()\n",
    "    + rstrip()\n",
    "    + splitlines()\n",
    "+ join()\n",
    "+ format()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hello World\n"
     ]
    }
   ],
   "source": [
    "message = 'Hello World'\n",
    "k = str.maketrans('H','h')\n",
    "print(message.translate(k))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 转码\n",
    "\n",
    "+ encode()\n",
    "+ decode()\n",
    "+ str()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'新浪'"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "str(b'\\xe6\\x96\\xb0\\xe6\\xb5\\xaa','utf-8')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 文本索引\n",
    "\n",
    "+ find()\n",
    "    + rfind()\n",
    "+ count()\n",
    "+ index()\n",
    "    + rindex()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 装饰\n",
    "\n",
    "+ swapcase()\n",
    "    + casefold()\n",
    "+ textwrap()\n",
    "+ upper()\n",
    "+ lower()\n",
    "+ center()\n",
    "+ zfill()\n",
    "+ ljust()\n",
    "+ rjust()\n",
    "+ expandtabs()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 特征判断\n",
    "\n",
    "+ startswith()\n",
    "+ endswith()\n",
    "+ isalnum()\n",
    "+ isalpha()\n",
    "+ isascii()\n",
    "+ isdecimal()\n",
    "+ isdigit()\n",
    "+ isidentifier()\n",
    "+ islower()\n",
    "+ isnumeric()\n",
    "+ isprintable()\n",
    "+ isspace()\n",
    "+ istitle()\n",
    "+ isupper()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
